Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Déclarez un :
VB:
Public TShape(1 To 6) As Shape
Et :
Code:
Set TShape(1) = WS1.Shapes("RECT-UDL1D")
etc.
Après vous pourrez le parcourir par son indice ou par un For Each Shp In TShape
 

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
 

Regueiro

XLDnaute Impliqué
Danreb Merci pour ton Aide
Voilà le code
VB:
Sub ShapeInvisible()
Dim i As Integer
InitVariables
With WS1
MsgBox .Shapes.Count
End With
For i = 1 To 6
    MShape(i).Visible = False
Next i
End Sub
 

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…