+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre Expert Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 630
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 630
    Points : 1 965
    Points
    1 965

    Par défaut [E-07] Liste les boîtes de dialogues intégrées

    Bonjour,

    Je voudrai lister les boîtes de dialogues intégrées de excel.

    Je n'y arrive pas dans excel, est-ce possible ?

    Je l'avais fait avec word :

    Code :
    1
    2
    3
    4
    5
    6
    7
     
    Dim iDial As Dialog
    Dim i As Integer
     
    For Each iDial In Dialogs
        Debug.Print  iDial.CommandName
    Next

  2. #2
    pgz
    pgz est déconnecté
    Expert Confirmé Sénior Avatar de pgz
    Homme Profil pro Pierre GONZALEZ
    Développeur Office VBA
    Inscrit en
    août 2005
    Messages
    3 466
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre GONZALEZ
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : août 2005
    Messages : 3 466
    Points : 6 132
    Points
    6 132

    Par défaut

    Bonsoir.

    L'objet Dialog d'Excel n'a pas de propriété CommandName, celui de Word oui.
    Regarde la liste des propriétés.

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 630
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 630
    Points : 1 965
    Points
    1 965

    Par défaut

    En effet, j'ai bien noté la différence, est-il possible cependant de lister les boites de dialogues, sans doute par un autre biais ?

  4. #4
    pgz
    pgz est déconnecté
    Expert Confirmé Sénior Avatar de pgz
    Homme Profil pro Pierre GONZALEZ
    Développeur Office VBA
    Inscrit en
    août 2005
    Messages
    3 466
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre GONZALEZ
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : août 2005
    Messages : 3 466
    Points : 6 132
    Points
    6 132

    Par défaut

    Il y a la liste fournie par l'aide.

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    Membre Expert Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 630
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 630
    Points : 1 965
    Points
    1 965

    Par défaut

    Merci Pgz et en plus avec ça il y a leur valeur donc je vais pouvoir avancer.

    Petite précision, ce que je voulais faire à l'origine était de lister les boites de dialogue dans une nouvelle feuille ( finalement j'ai recopié l'aide) puis d'afficher
    cette boite de dialogue lorsque l'on selectionne la cellule.

    Par exemple lorsque je clique sur la cellule contenant xlDialogColorPalette, que la boite de dialogue de la palette de couleur s'affiche.

    C'est sur avec l'aide VBA, le code associé est indiqué et donc je peux le faire, à travers des exemples je cherche juste à progresser.

    Le code lors de la selection d'une cellule dans la feuille contenant en première colonne les noms des boites de dialogue et en seconde les codes correspondants :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    ' Dim nom_diag As String
    On Error GoTo geserr
     
     Set isect = Intersect(Range("A:A"), Target)
     If Not isect Is Nothing Then
         If Target.Cells.Count = 1 Then
            If Target.Value > " " Then
                    ' Application.Dialogs(nom_diag).Show 'ne fonctionne pas
                    Application.Dialogs(Target.Offset(0, 1).Value).Show
            End If
        End If
    End If
     
    geserr:
    If Err.Number > 0 Then
        Debug.Print Err.Number & " : " & Err.Description & vbCrLf  ' & nom_diag
    End If
    End Sub

  6. #6
    Rédacteur

    Homme Profil pro michel Tanguy
    Inscrit en
    août 2005
    Messages
    3 318
    Détails du profil
    Informations personnelles :
    Nom : Homme michel Tanguy
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : août 2005
    Messages : 3 318
    Points : 18 613
    Points
    18 613

    Par défaut

    bonsoir

    Personnellement, j'ajouterais la valeur de la constante xlDialogColorPalette dans la colonne suivante et j'utiliserais cette valeur pour ouvrir la boîte de dialogue :

    Code :
    Application.Dialogs(Val_Constante).Show
    Par exemple
    xlDialogColorPalette ---> 161



    Nota
    Pour connaitre la valeur d'une constante, tu peux utiliser :
    Code :
    MsgBox xlDialogColorPalette

    bonne soirée
    michel

  7. #7
    Membre Expert Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 630
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 630
    Points : 1 965
    Points
    1 965

    Par défaut

    Merci beaucoup de s'interesser à mon sujet.

    Dans l'aide VBA on parle d'énumération :

    Énumération XlBuiltInDialog
    Est-il possible de le faire par un code VBA ?


    Edit : Sinon à partir d'un String "xlDialogActivate" est il possible de retrouver la valeur (103) ?

  8. #8
    Membre Expert Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 630
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 630
    Points : 1 965
    Points
    1 965

    Par défaut

    Je vais clore ce post un peu à contre coeur, je ne sais toujours pas si on peut enumerer les boites de dialogue.

    Finalement j'ai recuperé une liste déja toute faite des boites de dialogue et je génère un code à partir de leur valeur, si la procédure existe déjà dans un autre module, je ne le génère pas, ainsi quand je clique sur la colonne la boite de dialogue s'affiche basiquementet parfois lorsque j'ai écrit une procédure spécifique avec des paramètres personnalisés.

    Un extrait de l'ecriture du code :

    Code :
    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
    ' ----------------------------------------------------- '
    ' Boucle sur la plage de cellules
    ' ----------------------------------------------------- '
     
    Set MaPlage = Range("A65536").End(xlUp): Set MaPlage = Range("A2:" & MaPlage.Address)
     
    For Each Cellules In MaPlage
     
        If BModule Then
            If VerifierExistenceMacro(ThisWorkbook, "ZZ_Show_Modifie", "D_" & Cellules) Then
               BMacro = True 'La macro "D_" ' "xlDialog... existe
            Else
                BMacro = False
            End If
        End If
     
     
        If Not BMacro Then
        LeCode = LeCode & vbCrLf & FEcriture_Code(Cellules.Value, Cellules.Offset(0, 1).Value)
        End If
    Next
     
    ' ----------------------------------------------------- '
    ' Ajouter LeCode
    ' ----------------------------------------------------- '
    With vbcomp.CodeModule
            .InsertLines 1, LeCode
    End With
    un extrait du résultat :

    Code :
    1
    2
    3
    4
    5
    Sub D_xlDialogAddChartAutoformat()
    On Error Resume Next
    Application.Dialogs(390).Show
    On Error GoTo 0
    End Sub
    La procédure evenementielle :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim nom_diag As String
    On Error GoTo geserr
     
    Application.DisplayAlerts = False
     
     Set isect = Intersect(Range("A:A"), Target)
     If Not isect Is Nothing Then
         If Target.Cells.Count = 1 Then
            If Target.Value > " " Then
     
                  Run "D_" & Target.Value
     
            End If
        End If
    End If
     
    geserr:
    Application.DisplayAlerts = True
    If Err.Number > 0 Then
        Debug.Print Err.Number & " : " & Err.Description & vbCrLf & nom_diag
    End If
    End Sub
    Edit DAns la feuille :

    Nom xlDialogActivate
    Valeur 103
    Description BoîtededialogueActiver
    Affichable Vrai
    Paramètres window_text,pane_num

  9. #9
    Membre Expert Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 630
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 630
    Points : 1 965
    Points
    1 965

    Par défaut

    En fait ce que j'aurai voulu faire mais est-ce possible c'est récupperer les noms des variables utilisées, c'est-à-dire, la même liste que l'editeur fourni automatiquement lorsque l'on tape :

    En tout cas ce post m'a permis de progresser sur les boites de dialogues.


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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •