Word Menu déroulant msgbox dans un word

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

  • Macro.docx
    21.9 KB · Affichages: 6

job75

XLDnaute Barbatruc
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

  • Liste(1).xlsm
    16.2 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
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

  • Macro(1).docm
    30.4 KB · Affichages: 2

Eric KERGRESSE

XLDnaute Occasionnel
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
 

Discussions similaires

Réponses
14
Affichages
671

Statistiques des forums

Discussions
312 214
Messages
2 086 313
Membres
103 175
dernier inscrit
abcc