VBA pour application word 2

Bonjour la famille

il y a quelque peu, j'avais posté dans le forum un besoin d'aide un sujet semblable et j'avais trouvé solution.

Cependant, J'ai un formulaire Word contenant des "zones de texte" (Contrôle ActiveX) et "un contrôle du contenu de zone de liste déroulante" alimenté à partir d'un fichier excel. Puis-je avoir de l'aide sur comment faire pour remplir automatiquement tous ces TextBox en fonction de ma sélection du contrôle de contenu de liste déroulante dans ?

Je vous propose ainsi

- Un classeur Excel nommé "Classeur1" qui contient un tableau avec cinq colonnes. J'y ai défini une plage dynamique nommée "l_Noms" pour les données de la colonne des noms (première colonne).

- Un fichier Word nommé "Doc1" contenant un "contrôle du contenu de zone de liste déroulante" nommé "ListeNoms" et une "zones de texte" (de type Contrôle ActiveX) nommés RESPECTIVEMENT "txtMatricules", txtdate, txtlieu, txtpere.

17doc1.docm (30.94 Ko)
17classeur1.xlsm (10.49 Ko)

NB: j'ai réussi à coder pour alimenter le contrôle du contenu de zone de liste déroulante

je veux que à chaque séléction dans mon contrôle du contenu de zone de liste déroulante, tous les textBox se mettent à jour :

***la zone de texte "txtMatricules", prend la valeur de la deuxième colonne du même tableau excel

***la zone de texte "txtdate" prend la valeur de la troisième colonne du même tableau excel

***la zone de texte "txtlieu" prend la valeur de la quatrième colonne du même tableau excel

***la zone de texte "txtpere" prend la valeur de la quatrième colonne du même tableau excel

dans l'attente d'une suite favorable , je vous fais confiance ...

Bonsoir,

Votre fichier doc ne contient pas toutes les zones de texte, mais on fait comme si elles y étaient.

Donc, pour le principe, vous sélectionnez un nom avec la liste déroulante et les zones de textes doivent afficher les informations liées à ce nom.

Ceci devrait aller (pas vérifié):

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
    ' Vérifie si le contrôle qui a perdu le focus est la liste déroulante "ListeNoms"
    If ContentControl.Tag = "ListeNoms" Then
        Dim selectedValue As String
        Dim associatedValue As String
        Dim xlApp As Object
        Dim ExcelWorkbook As Object
        Dim ExcelRange As Object
        Dim L As Long
        Dim Nombre_lignes As Long
        Dim Fichier_Excel As String

        ' Récupère la valeur sélectionnée dans la liste déroulante
        selectedValue = ContentControl.Range.Text

        ' Emplacement du fichier Excel
        Fichier_Excel = "D:\Classeur1.xlsm"

        ' Crée ou récupère l'instance de l'application Excel
        On Error Resume Next
        Set xlApp = GetObject(, "Excel.Application")
        If xlApp Is Nothing Then
            Set xlApp = CreateObject("Excel.Application")
        End If
        On Error GoTo 0

        ' Ouvre le classeur Excel
        Set ExcelWorkbook = xlApp.Workbooks.Open(Fichier_Excel)

        ' Récupère la plage "l_Noms" dans la feuille "Feuil1"
        Set ExcelRange = ExcelWorkbook.Sheets("Feuil1").Range("l_Noms")

        ' Compte le nombre de lignes dans la plage
        Nombre_lignes = ExcelRange.Rows.Count

'***************************************************************************************************************
        ' Parcourt chaque ligne de la plage pour trouver la valeur associée
        For i = 2 To Nombre_lignes
            If ExcelRange.Cells(i, 1).Value = ExcelRange Then 'si le nom est celui de l'adhérent sélectionné alors,
                ' Récupère la valeur de la colonne associée (par exemple, la 2e colonne)
                Me.txtMatricules.Text = ExcelRange.Cells(i, 2).Value
                Me.txtdate.Text = ExcelRange.Cells(i, 3).Value
                Me.txtlieu.Text = ExcelRange.Cells(i, 4).Value
                Me.txtpere.Text = ExcelRange.Cells(i, 5).Value
            End If
        Next i
'***************************************************************************************************************
        ' Ferme le classeur Excel sans enregistrer
        ExcelWorkbook.Close SaveChanges:=False
        Set xlApp = Nothing
        Set ExcelWorkbook = Nothing
        Set ExcelRange = Nothing
    End If
End Sub

Cdlt

Je vous remercie pour cette brillante intervention.

Rechercher des sujets similaires à "vba application word"