MsoAutoShapeType

Le
garnote
Bonjour,

Dans cette macro, je voudrais obtenir en U65 le nom de la
constante MsoAutoShapeType des formes automatiques
que dessinent ladite macro.
Est-ce possible ?

Serge


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Formes_Concentriques()
Sheets.Add
With ActiveWindow
.ScrollRow = 63
.ScrollColumn = 12
.DisplayGridlines = False
End With
cx = 1000
cy = 1000
For i = 1 To 10
For r = 10 To 200 Step 10
Lc = cx - r
Tc = cy - r
Wc = 2 * r
Hc = 2 * r
Set forme = ActiveSheet.Shapes.AddShape(i, Lc, Tc, Wc, Hc)
forme.Fill.Visible = False
Next r
DoEvents
[U65] = forme.Type 'MsoAutoShapeType ?
Sleep (1500)
[U65].ClearContents
ActiveSheet.DrawingObjects.Delete
Next i
End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4572951
Tu vas devoir faire un select case sur forme.Type
et pour obtenir la valeur numérique de chacun des types
tu vas à partir de la fenêtre d'éditeur de code dans l'explorateur
d'objets (F2) , dans la cas rechercher, tu inscris : MsoAutoShapeType
et tu devrais avoir toutes les constantes listées dans la fenêtre de droite.
si tu cliques sur chacune d'elles, leur valeur numérique s'affiche dans le
bas de la fenêtre.

Dans le code, les constantes alphanumériques sont représentées par
leur équivalent numérique... je ne connais pas une façon de faire
l'inverse autre que mentionner.

Si tu trouves, dis nous le !




"garnote" %
Bonjour,

Dans cette macro, je voudrais obtenir en U65 le nom de la
constante MsoAutoShapeType des formes automatiques
que dessinent ladite macro.
Est-ce possible ?

Serge


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Formes_Concentriques()
Sheets.Add
With ActiveWindow
.ScrollRow = 63
.ScrollColumn = 12
.DisplayGridlines = False
End With
cx = 1000
cy = 1000
For i = 1 To 10
For r = 10 To 200 Step 10
Lc = cx - r
Tc = cy - r
Wc = 2 * r
Hc = 2 * r
Set forme = ActiveSheet.Shapes.AddShape(i, Lc, Tc, Wc, Hc)
forme.Fill.Visible = False
Next r
DoEvents
[U65] = forme.Type 'MsoAutoShapeType ?
Sleep (1500)
[U65].ClearContents
ActiveSheet.DrawingObjects.Delete
Next i
End Sub
garnote
Le #4572501
Bricolage :
Je me suis fait une liste avec les noms des constantes
et les valeurs numériques correspondantes.
Je peux alors récupérer le nom avec une recherche verticale.
Curieusement, Excel ne veut pas dessiner les formes
MsoShapeNotPrimitive (138) et MsoShapeMixed (-2).
Il ne me reste que 137 formes :-)

Serge


"MichDenis"
Tu vas devoir faire un select case sur forme.Type
et pour obtenir la valeur numérique de chacun des types
tu vas à partir de la fenêtre d'éditeur de code dans l'explorateur
d'objets (F2) , dans la cas rechercher, tu inscris : MsoAutoShapeType
et tu devrais avoir toutes les constantes listées dans la fenêtre de droite.
si tu cliques sur chacune d'elles, leur valeur numérique s'affiche dans le
bas de la fenêtre.

Dans le code, les constantes alphanumériques sont représentées par
leur équivalent numérique... je ne connais pas une façon de faire
l'inverse autre que mentionner.

Si tu trouves, dis nous le !




"garnote" %
Bonjour,

Dans cette macro, je voudrais obtenir en U65 le nom de la
constante MsoAutoShapeType des formes automatiques
que dessinent ladite macro.
Est-ce possible ?

Serge


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Formes_Concentriques()
Sheets.Add
With ActiveWindow
.ScrollRow = 63
.ScrollColumn = 12
.DisplayGridlines = False
End With
cx = 1000
cy = 1000
For i = 1 To 10
For r = 10 To 200 Step 10
Lc = cx - r
Tc = cy - r
Wc = 2 * r
Hc = 2 * r
Set forme = ActiveSheet.Shapes.AddShape(i, Lc, Tc, Wc, Hc)
forme.Fill.Visible = False
Next r
DoEvents
[U65] = forme.Type 'MsoAutoShapeType ?
Sleep (1500)
[U65].ClearContents
ActiveSheet.DrawingObjects.Delete
Next i
End Sub





Publicité
Poster une réponse
Anonyme