IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Recuperer le nom des boutons se trouvant sur une feuilles excel en VBA [XL-2007]


Sujet :

Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Points : 45
    Points
    45
    Par défaut Recuperer le nom des boutons se trouvant sur une feuilles excel en VBA
    Bonjour,

    J'ai un fichier Excel avec beaucoup de feuilles, et dans l'une des feuilles, j'ai des boutons qui me permettent d'acceder directement aux autres feuilles.

    Existe t'il une commande qui me pememettrait de recuperer le nom dans tous les boutons ?

    Merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    La macro est différente selon qu'il s'agit de contrôles de formulaire ou de contrôles ActiveX. J'ai fait une macro par type de contrôle, mais tu peux les fusionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Sub BoutonsActiveX()
    Dim Ligne As Long
    Sheets.Add.Name = "ListeActiveX"
    With Sheets("Feuil1")
        For i = 1 To .Shapes.Count
            'boucle sur les textboxes de la feuille (ActiveX)
            If .Shapes(i).Type = msoOLEControlObject Then
                If .Shapes(i).OLEFormat.progID = "Forms.CommandButton.1" Then
                    Ligne = Ligne + 1
                    Cells(Ligne, 1) = .Shapes(i).Name
                End If
            End If
        Next i
    End With
    End Sub
    Sub BoutonsFormulaire()
    Dim Sh As Shape, Ligne As Long
    Sheets.Add.Name = "ListeFormulaire"
    With Sheets("Feuil1")
        For Each Sh In .Shapes
            'si c'est un contrôle de formulaire
            If Sh.Type = msoFormControl Then
                If Sh.FormControlType = xlButtonControl Then
                    Ligne = Ligne + 1
                    Cells(Ligne, 1) = Sh.Name
                End If
            End If
        Next Sh
    End With
    End Sub

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ca dépend de quoi sont constitués tes boutons.
    Les miens sont de simples formes que je peux récupérer grace à la collection Shapes de l'objet Worksheet.

    Pour avoir leur nom, c'est tout simplement la propriété Name de chacun.
    Pour savoir s'il s'agit d'un bouton déclenchant une macro, j'utilise leur propriété OnAction.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    La macro est différente selon qu'il s'agit de contrôles de formulaire ou de contrôles ActiveX. J'ai fait une macro par type de contrôle, mais tu peux les fusionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Sub BoutonsActiveX()
    Dim Ligne As Long
    Sheets.Add.Name = "ListeActiveX"
    With Sheets("Feuil1")
        For i = 1 To .Shapes.Count
            'boucle sur les textboxes de la feuille (ActiveX)
            If .Shapes(i).Type = msoOLEControlObject Then
                If .Shapes(i).OLEFormat.progID = "Forms.CommandButton.1" Then
                    Ligne = Ligne + 1
                    Cells(Ligne, 1) = .Shapes(i).Name
                End If
            End If
        Next i
    End With
    End Sub
    Sub BoutonsFormulaire()
    Dim Sh As Shape, Ligne As Long
    Sheets.Add.Name = "ListeFormulaire"
    With Sheets("Feuil1")
        For Each Sh In .Shapes
            'si c'est un contrôle de formulaire
            If Sh.Type = msoFormControl Then
                If Sh.FormControlType = xlButtonControl Then
                    Ligne = Ligne + 1
                    Cells(Ligne, 1) = Sh.Name
                End If
            End If
        Next Sh
    End With
    End Sub
    Merci, ça marche bien.

  5. #5
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Ca dépend de quoi sont constitués tes boutons.
    Les miens sont de simples formes que je peux récupérer grace à la collection Shapes de l'objet Worksheet.

    Pour avoir leur nom, c'est tout simplement la propriété Name de chacun.
    Pour savoir s'il s'agit d'un bouton déclenchant une macro, j'utilise leur propriété OnAction.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/03/2012, 10h03
  2. [XL-2003] localiser des objets sur une feuille excel
    Par Roms un dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2009, 14h45
  3. Réponses: 3
    Dernier message: 27/02/2009, 17h50
  4. Réponses: 9
    Dernier message: 04/04/2007, 11h16
  5. (EXCEL) Effacer des images gif insérées sur une feuille ?
    Par romo3 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/08/2005, 21h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo