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

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

  1. #1
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    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 chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    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 éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    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 chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    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 : 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
    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
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(Val_Constante).Show
    Par exemple
    xlDialogColorPalette ---> 161



    Nota
    Pour connaitre la valeur d'une constante, tu peux utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox xlDialogColorPalette

    bonne soirée
    michel

  7. #7
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    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 chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    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 : 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
    ' ----------------------------------------------------- '
    ' 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
    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 chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    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.

Discussions similaires

  1. Impossible de fermer les boîtes de dialogue
    Par lapinou_44 dans le forum Windows Vista
    Réponses: 6
    Dernier message: 15/11/2012, 22h33
  2. [XL-2003] Boîte de dialogue intégrée pour sélection d'un Range via un Userform
    Par lamina008 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/06/2010, 12h15
  3. [CKEditor] [Vers 2.6] Les boîtes de dialogues sont vides
    Par Louka-65 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 23/05/2008, 17h58
  4. Bloquer l'affichage de toutes les boîtes de dialogue
    Par Tiresia dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/08/2007, 14h33
  5. Réponses: 3
    Dernier message: 07/03/2007, 11h10

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