Microsoft 365 Parcourir mes Variables

Regueiro

XLDnaute Impliqué
Bonsoir le Forum
Comment parcourir mes variables Publiques
VB:
Option Explicit
Public WS1 As Worksheet
Public MShape1, MShape2, MShape3, MShape4, MShape5, MShape6 As Shape

Sub InitVariables()
Set WS1 = Worksheets("GRAPHIQUE")
Set MShape1 = WS1.Shapes("RECT-UDL1D")
Set MShape2 = WS1.Shapes("Isosceles Triangle 2")
Set MShape3 = WS1.Shapes("Isosceles Triangle 5")
Set MShape4 = WS1.Shapes("Connecteur droit 6")
Set MShape5 = WS1.Shapes("RECT-UDL1L")
Set MShape6 = WS1.Shapes("RECT-PUDL1D")
End Sub


Sub ShapeInvisible()
Dim i As Integer
Dim Tableau()
InitVariables
With WS1
For i = 1 To 6
Tableau(i) = "MShape" & i
Debug.Print Tableau(i)
'MShape& i.Visible = False
Next i


'For i = 1 To .Shapes.Count

'.Shapes.Item("MShape" & i).Visible = False


'.Shapes("MShape" & i).Visible = False
'Shapes(i).Visible = False
'Shapes("North" & i).Visible = True


'Next i
End With

End Sub
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Regueiro,

j'aime bien ta 2ème ligne Public :

Public MShape1, MShape2, MShape3, MShape4, MShape5, MShape6 As Shape

petite question : combien de Shapes vois-tu ? ... 6 ? tu es bien sûr ? ...

moi j'en vois qu'une seule : y'a une seule variable de type "Shape" : MShape6 ;
et 5 variables de type "Variant" : MShape1 à Mshape5

tu vois c'que j'veux dire ? 😁 😜

soan
 

Regueiro

XLDnaute Impliqué
Bonsoir
Soan, je ne vois pas ce que tu veux dire
VB:
Sub ShapeInvisible()
InitVariables
With WS1
MsgBox .Shapes.Count
End With
MShape1.Visible = False
End Sub

Ce code marche parfaitement
Danreb je regarde ton code et te donne des nouvelles. Merci à tous les 2
 

Dranreb

XLDnaute Barbatruc
@soan veut dire que si une variable est déclarée mais non typée elle est assumée As Variant.
Votre déclaraction était donc comme Public MShape1 As Variant, MShape2 As Variant, MShape3 As Variant, MShape4 As Variant, MShape5 As Variant, MShape6 As Shape
 

soan

XLDnaute Barbatruc
Inactif
@Regueiro

j'ai voulu dire que le type Shape de As Shape qui est au bout à droite de ta ligne n'est valable QUE pour MShape6 ; TOUTES les autres variables à gauche, MShape1 à MShape 5, sont des variables SANS type, donc elles ont PAR DÉFAUT le type IMPLICITE Variant ; donc pour que TOUTES les variables aient le type Shape, tu dois écrire :​

VB:
Public MShape1 As Shape, MShape2 As Shape, MShape3 As Shape, MShape4 As Shape, MShape5 As Shape, MShape6 As Shape

c'était juste une petite remarque en passant ; mais pour ta demande, je te laisse voir avec Dranreb. ;)

soan
 

Statistiques des forums

Discussions
315 133
Messages
2 116 603
Membres
112 802
dernier inscrit
Dan Marc