Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Word Menu déroulant msgbox dans un word

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bonoboas

XLDnaute Occasionnel
Bonjour à tous,

Je bloque sur un sujet simple. Je souhaite mettre le contenu d'une liste déroulante dans un msgbox .

Merci d'avance pour votre aide
 

Pièces jointes

Maintenant sur Excel on peut par exemple concaténer les éléments d'une liste de validation.

Voyez le fichier joint et exécutez cette macro :
VB:
Sub Liste()
Dim mem$, f$, x$, c As Range, message$
With [A1] 'à adapter
    On Error Resume Next
    If .Validation.Type <> 3 Then Exit Sub 'il faut une liste
    On Error GoTo 0
    mem = .Formula
    .Formula = .Validation.Formula1 'copie la formule de validation
    x = .Formula
    .Formula = mem
End With
If IsError(Evaluate(x)) Then
    MsgBox x
Else
    For Each c In Evaluate(x)
        message = message & vbLf & c
    Next
    MsgBox Mid(message, 2)
End If
End Sub
 

Pièces jointes

Dernière édition:
Bien que ce ne soit pas le bon forum, voyez le fichier Word joint et la macro lancée par le bouton :
VB:
Sub Liste()
Dim c As ContentControl, n&, message$, i&
For Each c In ActiveDocument.ContentControls
    n = n + 1
    message = ""
    For i = 1 To c.DropdownListEntries.Count 'collection
        message = message & vbLf & c.DropdownListEntries(i)
    Next i
    If i > 1 Then MsgBox i - 1 & " éléments :" & vbLf & message, , "Contrôle " & n
Next c
End Sub
Tous les contrôles de contenu du document sont étudiés.
 

Pièces jointes

Bonjour Bonoboas,

Il vous faut transformer votre fichier en Docm.

Dans le module ThisDocument, 2 possibilités :
  • Soit à partir d'un événement sur le ContentControl
  • Soit à à partir du CommandButton.
VB:
Option Explicit

Private Sub CommandButton1_Click()

Dim I As Integer

    For I = 1 To ContentControls.Count
        With ContentControls(I)
             If .Title = "Demandeur" Then MsgBox .Range
        End With
    Next I


End Sub

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)

  MsgBox ContentControl.Range
  Cancel = False
 
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
118
Réponses
72
Affichages
1 K
Réponses
22
Affichages
660
Réponses
14
Affichages
171
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…