Golan2
Messages postés6Date d'inscriptionvendredi 2 novembre 2007StatutMembreDernière intervention16 octobre 2009
-
16 oct. 2009 à 19:30
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 2017
-
19 oct. 2009 à 01:52
Bonjour,
J'espère ne pas vous embêter avec cette question a priori facile mais bien qu'ayant lu la littérature abondante à ce sujet sur différents site, il ne me semble pas avoir trouvé la réponse.
La question, la voilà :
Dans une première feuille ("Data") je met dans une cellule un texte assez long sur une seule ligne (pas de "alt+entrée" ni renvoi à la ligne automatique).
Je voudrais copier cette cellule au texte très long dans une cellule d'un deuxième onglet ("Détails"). Cette seconde cellule devant respecter une certaine taille pour des questions de mise en page, il n'est pas possible d'y loger le texte en entier et du coup je souhaiterais le faire défiler.
J'ai essayé les "barres de défilement" mais il me semble qu'on ne peut qu'y affecter des valeurs numérique.
J'ai également essayé d'envoyer le texte de la 1ere cellule vers une "zone de liste" mais le texte n'est pas renvoyé à la ligne quand on dépasse la largeur de la dite zone de texte...
Je n'ai donc pas vraiment d'idée.
J'accueille avec plaisir toute bonne idée.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 oct. 2009 à 03:47
Salut
Sur le principe du défilement, rien d'automatique, c'est à toi de le concevoir.
Qu'est ce que c'est qu'un texte défilant ?
C'est simplement un même texte que l'on coupe et dont la première lettre change, de gauche à droite, au gré des caractères présents dans la chaine d'origine.
Il est donc important de conserver la chaine d'origine quelque part : pour toi, dans ta feuille "Data".
Complication : Hélas, en VBA, il n'existe pas d'objet Timer (comme sous VB6) permettant le cadençage du défilement.
Il faut donc avoir recours aux APIs.
Tu trouveras un exemple <dans ce lien> trouvé en recherchant "vba timer" parmi les codes sources du site.
Le défilement : A chaque cycle du Timer (que tu auras initialisé et lancé), la property "Timer" de la classe se déclenchera.
Insère lui ta boucle de décalage :
Static lCompteur As Long
lCompteur = lCompteur + 1
If lCompteur > Len(Cells(x, y).Value) Then
lCompteur = 1
End If
Cells(z, t).Value = Mid$(Cells(x, y).Value, lCompteur)
En supposant que "x,y" définissent les coordonnées de la cellule contenant le texte d'origine, et "z,t", la cellule d'affichage.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 19 oct. 2009 à 01:52
Bonjour,
Une idée en passant...
Ne pourrais-tu pas mettre ce texte en commentaire dans la cellule de ta feuille "Détails". Cela ne détruirait pas ta mise en page.
Si ce texte est appellé à changer tu peux utiliser l'événement Change pour formater à ta guise ce commentaire.
Par exemple :
With Range("C3")
.ClearComments
.AddComment
.Comment.Text Text:="Blabla" & vbLf & "etc"
End With