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

VBA Word Discussion :

Combobox depuis excel


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 105
    Points : 35
    Points
    35
    Par défaut Combobox depuis excel
    Bonjour,
    Comment remplir une combobox d'un form sur word depuis une source colonne d'un fichier excel ?
    cdt

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 105
    Points : 35
    Points
    35
    Par défaut
    Edit : Trouvé


    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
     
    Dim iR As Integer
    Dim i As Integer
    Dim oDoc As Document
    Dim oDS As MailMergeDataSource
    Dim xlApp As Excel.Application 'Application Excel pour ouvrir un fichier XLS
    Dim xlWb As Excel.Workbook 'Classeur Excel
    Dim xlWs As Excel.Worksheet 'Feuille du classeur
    chemin = ActiveDocument.Path & "\test.xlsx"
     
    Set xlApp = New Excel.Application
    'Ouverture du fichier
    Set xlWb = xlApp.Workbooks.Open(chemin)
    'Utilisation de la première feuille
    Set xlWs = xlWb.Worksheets(1)
    Set oDoc = ActiveDocument
    Set oDS = oDoc.MailMerge.DataSource
     
    oDoc.MailMerge.DataSource.ActiveRecord = wdLastRecord
    iR = oDoc.MailMerge.DataSource.ActiveRecord
    oDoc.MailMerge.DataSource.ActiveRecord = wdFirstRecord
     
    'Récupère les données de la colonne M...
    For j = 2 To iR
    ComboBox1 = xlWs.Range("M" & j)
    '...et filtre les doublons
    If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem xlWs.Range("M" & j)
    Next j
     
    End Sub

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Hi,
    Je n'arrive pas à réutiliser ce code. Il me fait une belle erreur "Requested Object is not available"
    J'ai du oublié de déclarer une référence dans VBA de mon nouveau PC. Mais laquelle ?
    Références Microsoft Excel 15.0 Object Librairy est bien activée.

    Qu'est ce que j'oublie ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zazadec16 Voir le message
    Bonjour,

    Combobox1 fait partie de ThisDocument.

    Une autre solution en utilisant un objet dictionnaire et une matrice pour éliminer les doublons et charger la liste :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    Option Explicit
     
    Public ListeCle As Variant, ListeElement As Variant
     
    Sub ChargerLaCombobox1()
     
    Dim J As Long, DerniereLigne As Long
    Dim Chemin As String
     
    Dim xlApp As Excel.Application 'Application Excel pour ouvrir un fichier XLS
    Dim xlWb As Excel.Workbook     'Classeur Excel
    Dim xlWs As Excel.Worksheet    'Feuille du classeur
     
            On Error GoTo Fin:
     
            Chemin = ActiveDocument.Path & "\test.xlsm" ' "\test.xlsx"
     
            Set xlApp = New Excel.Application
            Set xlWb = xlApp.Workbooks.Open(Chemin) 'Ouverture du fichier
            Set xlWs = xlWb.Worksheets(1)           'Utilisation de la première feuille
     
            With xlWs
                 DerniereLigne = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
                 If DerniereLigne <= 2 Then GoTo Fin
                 ChargerEtTrierLaListe .Range("M2:M" & DerniereLigne)
            End With
     
            'Récupère les données triées de la matrice ListeCle
            With ThisDocument
                 .ComboBox1.Clear
                 For J = LBound(ListeCle) To UBound(ListeCle)
                     .ComboBox1.AddItem ListeCle(J)
                 Next J
                 .ComboBox1.ListIndex = 0
            End With
     
    Fin:
     
            xlWb.Close savechanges:=False
            xlApp.Quit
     
            Set xlWs = Nothing
            Set xlWb = Nothing
            Set xlApp = Nothing
     
    End Sub
     
     
     
    Sub ChargerEtTrierLaListe(ByVal AireCombo As Excel.Range)
     
    Dim CelluleCombo As Excel.Range
    Dim CtrI As Integer, CtrJ As Integer
    Dim Tempo1, Tempo2
    Dim MaListe As Object
     
        On Error GoTo FinDico
     
        Set MaListe = CreateObject("Scripting.Dictionary")
     
        ' Ajout des différents enregistrements sans doublons dans le Dico
        '-----------------------------------------------------------------
        For Each CelluleCombo In AireCombo
            If Trim(CelluleCombo.Value) <> "" Then
               If Not MaListe.Exists(CelluleCombo.Value) Then
                  MaListe.Add (CelluleCombo.Value), CStr(CelluleCombo.Value)
               End If
            End If
         Next CelluleCombo
     
         ListeCle = MaListe.Keys
         ListeElement = MaListe.Items
     
         ' Tri par ordre alphabétique
         '----------------------------
         For CtrI = 0 To MaListe.Count - 2
             For CtrJ = CtrI + 1 To MaListe.Count - 1
                 If ListeElement(CtrI) > ListeElement(CtrJ) Then
     
                    Tempo1 = ListeCle(CtrJ)
                    Tempo2 = ListeElement(CtrJ)
     
                    ListeElement(CtrJ) = ListeElement(CtrI)
                    ListeCle(CtrJ) = ListeCle(CtrI)
     
                    ListeCle(CtrI) = Tempo1
                    ListeElement(CtrI) = Tempo2
     
                 End If
              Next CtrJ
          Next CtrI
     
          GoTo FinDico
     
    FinDico:
     
      Set MaListe = Nothing
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/03/2013, 11h12
  2. Connexion à Oracle depuis EXCEL
    Par Megaxel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/10/2005, 13h04
  3. Renseigner un formulaire Access depuis Excel
    Par vciofolo dans le forum Access
    Réponses: 6
    Dernier message: 30/09/2005, 12h12
  4. Ouverture d'un template Word depuis Excel
    Par modus vivendi dans le forum VBA Word
    Réponses: 1
    Dernier message: 14/08/2005, 11h29
  5. Problemes d'importation depuis excel
    Par KANCRENAZ dans le forum Access
    Réponses: 3
    Dernier message: 17/02/2005, 10h57

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