Faire défiler du texte dans une Cellule Excel

Signaler
Messages postés
6
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
16 octobre 2009
-
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
-
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.

Merci :)

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
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)
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
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

Bonne continuation,

Cheyenne