OVH Cloud OVH Cloud

vba - texte qui défile

12 réponses
Avatar
j-pascal
Bonsoir, et bonne Année à toutes et à tous ;-)

Dans le code qui suit (désolé pour l'auteur, je ne me rappelle plus où je
l'ai trouvé !),
j'obtiens le message : "Propriété ou méthode non géré par cet objet"
(ligne en cause "ActiveSheet.Shapes("monshape").TextFrame.Characters.Text =
Left(t, 50)".

'-----------------------------
Sub defile()
t = "Le message qui défile pendant un temps donné ..."
n = 0
Do While n < 200
t = Right(t, Len(t) - 1) & Left(t, 1)
ActiveSheet.Shapes("monshape").TextFrame.Characters.Text = Left(t, 50)

w = 0.1
temp = Timer
Do While Timer < temp + w
DoEvents
Loop
n = n + 1
Loop
End Sub
'-----------------------------

Je ne sais pas comment identifier plus précisément le problème !
Merci pour vos lumières,

JP

2 réponses

1 2
Avatar
LSteph
;-)
oui... quand même on y vient!

si tu l'as pris dans la BO Formulaire ça défile étrangement dans le bouton

si tu l'as pris dans la BO Contrôles VBA
là tu auras propriété non gérée par l'objet, c'est bien le message que
tu obtenais..?!


C'est ainsi le cas s'il se retrouve être Shapes(1) donc, lorsque tu le
mets dans une feuille vide de tout shape


je voulais reprendre simplement ton exemple en t'apportant ces éléments
et suggestions:
-ton code en lui même fonctionne
-on peut aussi déclarer les variables ;-)
-on peut supposer qu'il y ait déjà ou pas un shape qui s'appelle
"monshape" voir plusieurs shapes ou aucun donc

j'ai proposé une création mais il pourrait y avoir aussi vérfication,
rendre visible ...

...en fonction de ton but , à toi de voir!

@+

--
lSteph

Bonsoir Stéphane,

Merci,
Lors de mon premier essai, le texte a défilé dans le Shape que j'avais
créé pour un autre exemple.
J'ai alors déplacé le bouton de lancement de ton code, dans une autre
feuille et le texte a défilé dans le bouton lui-même !! Est-ce normal ?

@+ ?

JP

Sub defile()
Dim t As String, n As Long, w As Single, temp As Date
If ActiveSheet.Shapes.Count = 0 Then
Feuil1.Shapes.AddShape msoShapeOval, 80, 66#, 360#, 122
End If

t = "Le message qui défile pendant un temps donné ..."
n = 0
Do While n < 200
t = Right(t, Len(t) - 1) & Left(t, 1)
ActiveSheet.Shapes(1).TextFrame.Characters.Text = Left(t, 50)

w = 0.01
temp = Timer
Do While Timer < temp + w
DoEvents
Loop
n = n + 1
Loop
End Sub

'lSteph

Bonsoir, et bonne Année à toutes et à tous ;-)

Dans le code qui suit (désolé pour l'auteur, je ne me rappelle plus
où je l'ai trouvé !),
j'obtiens le message : "Propriété ou méthode non géré par cet objet"
(ligne en cause
"ActiveSheet.Shapes("monshape").TextFrame.Characters.Text = Left(t,
50)".

'-----------------------------
Sub defile()
t = "Le message qui défile pendant un temps donné ..."
n = 0
Do While n < 200
t = Right(t, Len(t) - 1) & Left(t, 1)
ActiveSheet.Shapes("monshape").TextFrame.Characters.Text =
Left(t, 50)

w = 0.1
temp = Timer
Do While Timer < temp + w
DoEvents
Loop
n = n + 1
Loop
End Sub
'-----------------------------

Je ne sais pas comment identifier plus précisément le problème !
Merci pour vos lumières,

JP







Avatar
j-pascal
Bonjour,

J'ai fait quelques modifs dans le but (complètement raté !) d'afficher le
"msg" un certain nombre de fois ...

Est-il possible d' :

- afficher le message 3 fois (ie) ?
- avoir une affichage par lettre et non par mot entier (fluidité ...) ?
- de combiner ce code avec la procédure (que j'ai déjà faite)
d'actualisation de la feuille ?


Ce que j'ai fait ;-( :

'-----------------
Sub defileTer() 'cb60 + modif jp

Dim compteur As Integer
Dim compteur2 As Integer

msg = "Actualisation du classeur en cours ..."

ActiveSheet.Shapes("monshapes").Visible = True

For compteur1 = 1 To 50 ''
For compteur2 = 1 To 50 ''
msg = Right(msg, Len(msg) - 1) & Left(msg, 1)
ActiveSheet.Shapes("monshapes").TextFrame.Characters.Text =
Left(msg, 50)
Next compteur2 ''
DoEvents
Next compteur1 ''

ActiveSheet.Shapes("monshapes").Visible = False

End Sub
'---------------------

@+ ?

JP
1 2