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

VBA Word Discussion :

Alimenter combobox via excel


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Alimenter combobox via excel
    Bonjour le Forum,

    Pour faire simple j’ai épuré le document et créé une seule ComboBox, celle qui m’intéresse pour cet exemple.

    Dans l’état, cela fonctionne très bien mais j’aimerai remplir ma ComboBox avec le Tableau1 qui peut être variable à l’aide du fichier Excel Data.
    Je n'ai pas trouvé d'équivalence sur les différents sites ou pas la possibilité de charger les exemples qui me correspondraient.

    Dans mon UserForm un bouton « Ajouter Data » peut également alimenter ma base en direct, ouvrant si ce n’est pas le cas le fichier Data.
    (Attention, changer le répertoire par défaut du fichier Data). Peut être là aussi modifier pour qu'il puisse ouvrir le fichier dans le même répertoire que le document Doc1 (facilite les transferts sur un autre PC).

    Merci d’avance

    Roby

  2. #2
    Expert éminent sénior
    Citation Envoyé par roby68 Voir le message


    Bonjour,

    En admettant que Data.xlsm soit dans le même répertoire que Doc1.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Futur Membre du Club
    Bonsoir le Forum, eric-kergresse

    Merci eric pour ce code, j'ai modifier et adapté à ce que je voulais en premier lieu. Passer obligatoirement par le UserForm à l'ouverture du fichier Doc.
    Par contre je ne sais pas ce qu'il fait à l'ouverture de la boite de dialogue (une fenêtre s'ouvre blanche et ensuite seulement le userform ) je trouve un peu lent.

    Ne pourrait-on pas faire mieux à ce niveau là.

    Le rajout de clients se fait bien sous Excel sans oublier bien sûr de sauvegarder avant de rouvrir le Doc.

    ci-joint les deux fichiers du moment.

    Roby

  4. #4
    Expert éminent sénior
    Citation Envoyé par roby68 Voir le message


    J'ai modifié les parties de code ci-dessous et Excel n'est plus visible pendant la transaction. J'ai décoché également la référence Excel pour passer en late binding, les variables sont maintenant des variables object (pas certain que cela ait de l'influence).

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Option Explicit
     
    Public ListeNomsPrenoms() As Variant
     
    Sub OuvrirDATA2()
    'Dim appXl As Excel.Application
    'Dim Wb As Excel.Workbook
    'Dim AireAgents As Excel.Range
    Dim appXl As Object, Wb As Object, AireAgents As Object
     
    Dim Repertoire As String
    Dim CtrI As Integer
     
        Application.ScreenUpdating = False
        Repertoire = ActiveDocument.Path & "\"
        Set appXl = CreateObject("Excel.Application")
       ' appXl.Visible = True
        Set Wb = appXl.Workbooks.Open(Repertoire & "Data.xlsm")
     
        Set AireAgents = Wb.Sheets("Clients").ListObjects("Tableau1").ListColumns("Civilité - NOM et Prénom").DataBodyRange
        For CtrI = 1 To AireAgents.Count
            ReDim Preserve ListeNomsPrenoms(CtrI - 1)
            ListeNomsPrenoms(CtrI - 1) = AireAgents(CtrI)
        Next CtrI
        appXl.Quit
        Set Wb = Nothing
        Set appXl = Nothing
     
        With UserForm1
              .ComboBox1.Clear
              .ComboBox1.List = ListeNomsPrenoms
        End With
     
        Application.ScreenUpdating = True
     
    End Sub


    Dans ThisDocument :
    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
     
    Private Sub Document_Open()
     
    Dim HeureDebut2, HeureFin2
     
        HeureDebut2 = Timer
     
        OuvrirDATA2
     
        HeureFin2 = Timer
        Debug.Print "Temps total : " & Round(HeureFin2 - HeureDebut2, 2) & " seconde(s)"
     
        UserForm1.Show
     
    End Sub


    Le temps du chargement avant l'ouverture de la boite de dialogue varie sur mon poste (I7) entre 1,6 et 2,1 secondes.

    Nb : Inutile de mettre des Call. L'initialisation du UserForm n'est pas une formalité.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  5. #5
    Futur Membre du Club
    Alimenter combobox via Excel
    Bonjour le Forum, Eric KERGRESSE

    Effectivement, c'est beaucoup mieux comme çà.

    Merci encore pour le temps passé sur mon code. On ne cesse d'apprendre de nouvelles combines.

    Bonne journée à tous et protégez-vous bien.

    Roby

    Discussion en résolu.