Comment récupérer les IDs, ou numéros de formes automatiques?

olhey

XLDnaute Occasionnel
IDs, ou numéros de formes automatiques?

Bonjour,après avoir trouvé des réponses très satisfaisantes sur ce forum fort util, je me permet d'en poser une seconde.

J'ai des formes automatiques de couleurs différentes, je fais des boutons pour les faire apparaître /disparaître. Le script fonctionne bien. Je crois que les formes sont numérotées dans l'ordre de création. Ma question est: après en avoir créé plusieurs comment récupérer ces numéros(en effet on ne se rappelle pas toujours de l'ordre de création des formes).

Je joins un exemple(là, jai fait attention à l'ordre de création donc tout fonctionne bein) merci de votre aide.

Merci d'avance :)
 

Pièces jointes

  • test_boutons.xls
    28.5 KB · Affichages: 56
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

Bonjour,

ci-joint un exemple pour lister les index des Rectangles.

Et un exemple pour creer des formes avec les noms que tu veux.
Par exemple RectJaune1, RectJaune2 etc ...

Ce qui permet de faciliter leur gestion, quand on connait leurs noms c'est plus facile ;)

Edit :
allezon se motive, je bloque la dessus. je n'arrive pas à terminer mon projet
Quand tu mets un message comme ça, mets au moins un smilley ...
 

Pièces jointes

  • TestBTN.xls
    42 KB · Affichages: 57

job75

XLDnaute Barbatruc
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

Bonjour olhey, Catrice,

Pourquoi ne pas récupérer plutôt les codes couleurs des formes :

Code:
Private Sub ToggleButton1_Click()
Dim s As Object, c As Byte
On Error Resume Next
For Each s In Feuil1.Shapes
c = 0
c = s.Fill.ForeColor.SchemeColor
If c = 10 Then s.Visible = Not Feuil1.ToggleButton1
Next
End Sub

Private Sub ToggleButton2_Click()
Dim s As Object, c As Byte
On Error Resume Next
For Each s In Feuil1.Shapes
c = 0
c = s.Fill.ForeColor.SchemeColor
If c = 13 Then s.Visible = Not Feuil1.ToggleButton2
Next
End Sub

Private Sub ToggleButton3_Click()
Dim s As Object, c As Byte
On Error Resume Next
For Each s In Feuil1.Shapes
c = 0
c = s.Fill.ForeColor.SchemeColor
If c = 57 Then s.Visible = Not Feuil1.ToggleButton3
Next
End Sub

Edit : Not Feuil1.ToggleButton1 pour éviter de cliquer 2 fois au début...

A+
 
Dernière édition:

olhey

XLDnaute Occasionnel
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

MERci a tous! je suis dsl catrice que l'absence de smiley, t'aie dérangé, je ferai mieux à l'avenir :(.

La solution avec lescouleur me semble bien. mais dans mon projet final c'est un peu compliquer car jai plusieurs type de shape:
-des rectangles, des ronds, et des connecteurs logique(formes automatiques) entre les rectangles et les ronds.

Comment spécifier dans le code de à job75: "je veux seulement agir sur les connecteurs"

Je vous joins mon projet.

Cijoint.fr - Service gratuit de dépôt de fichiers

Merci de votre aide, j'avance enfin! :)
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

Bonjour à tous,

en cliquant sur un objet quelconque, son nom apparaît dans le coin sup. gauche de la feuille ( petit recrtangle à gauche de la barre de formule
si une macro est affectée , ça fonctionne également avec un clic-droit

bonne journée à tous
.
 

olhey

XLDnaute Occasionnel
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

effectivement, mais dans mon code, ce ne'st pas cette référence qui est utilisée,

Code:
Private Sub ToggleButton1_Click()
Dim i As Integer

For i = Feuil1.Range("E30").Value To Feuil1.Range("E31").Value
    If Feuil1.Shapes(i).Name <> "ToggleButton1" Then
        If Feuil1.ToggleButton1.Value = True Then
            Feuil1.[COLOR="Red"]Shapes(i).[/COLOR]Visible = msoFalse
        Else
            Feuil1.Shapes(i).Visible = msoTrue
        End If
    End If
Next
End Sub
 

job75

XLDnaute Barbatruc
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

Re, salut Philippe,

Dans le fichier sur Cijoint, il y a pour l'instant une seule CheckBox pilotant la couleur verte.

Pour afficher/masquer les lignes vertes des connecteurs :

Code:
Private Sub CheckBox1_Click()
Dim s As Object
For Each s In Feuil1.Shapes
If s.Name Like "AutoShape*" Then
If s.Line.ForeColor.SchemeColor = 57 Then s.Visible = Feuil1.CheckBox1
End If
Next
End Sub

Edit : le fichier sur Cijoint complété :

Cijoint.fr - Service gratuit de dépôt de fichiers

A+
 
Dernière édition:

olhey

XLDnaute Occasionnel
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

La méga classe! Merci à tous!

juste au niveau du code couleur je ne comprends par très bien, à quoi correspondent 57, 13... où trouver le code de chaque couleur??
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

Re,

... où trouver le code de chaque couleur??

S'agit pas de les connaître par coeur ;)

Dans ce genre de problème, modifier les couleurs des objets en utilisant l'enregistreur de macro, il est là pour ça.

Avec un minimum de réflexion, on trouve alors facilement les codes couleurs (10 rouge, 13 jaune, 57 vert).

A+
 

job75

XLDnaute Barbatruc
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

Re,

Hum hum olhey...

Si l'on veut utiliser un ToggleButton, autant prendre un classique CommandButton et écrire :

Code:
Private Sub CommandButton1_Click()
Dim s As Object
For Each s In Feuil1.Shapes
If s.Name Like "AutoShape*" Then
If s.Line.ForeColor.SchemeColor = 57 Then s.Visible = [COLOR="Red"]Not s.Visible[/COLOR]
End If
Next
End Sub

Edit : s'il y a plusieurs boutons, on peut paramétrer la macro :

Code:
Private Sub CommandButton1_Click
Call Affiche(57)
End Sub

Sub Affiche(CodeCoul%)
Dim s As Object
For Each s In Feuil1.Shapes
If s.Name Like "AutoShape*" Then
If s.Line.ForeColor.SchemeColor = CodeCoul Then s.Visible = Not s.Visible
End If
Next
End Sub

A noter qu'on peut utiliser la même macro avec les CheckBox à condition de bien initialiser.

A+
 
Dernière édition:

olhey

XLDnaute Occasionnel
Re : Comment récupérer les IDs, ou numéros de formes automatiques?

Tout fonctionne à merveille, j'ai utilisé ta suggestion job75(avec les checkbox), c'est vrai que c'est plus simple de de chaque fois avoir tout le code pour une checkbox.

MERCI
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso