Liste déroulante utilisant base de données excel
Résolu
madabeach972
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
madabeach972 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
madabeach972 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Liste déroulante word avec source excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Excel liste déroulante en cascade - Guide
- Word 2013 - Télécharger - Traitement de texte
- Tableau word - Guide
2 réponses
Bonjour,
Oui, tente...
Vu que tu ne prends même pas la peine de faire un retour à ceux qui te répondent et encore moins de dire merci tu auras sûrement beaucoup de réponses.
eric
Oui, tente...
Vu que tu ne prends même pas la peine de faire un retour à ceux qui te répondent et encore moins de dire merci tu auras sûrement beaucoup de réponses.
eric
chose promise, chose due, voilà le code qui fonctionne parfaitement pour mon fichier word.
Sub mettre_a_jour_liste_nom()
Dim objCC As ContentControl
Dim docCCs As ContentControls
' Get the collection of all content controls with this tag.
ExcelFile = ThisDocument.Path + "\contacts04-09-2015.xls" 'mettre le chemin du fichier
Set xlAppList = CreateObject("Excel.Application")
Set MyWorkbook = xlAppList.Workbooks.Open(ExcelFile, 0, , , "") 'demarrage de la lecture du fichier excel
MyWorkbook.Sheets("liste contacts").Select 'selection de la feuille "liste contacts"
'selectionne tous les ContentControl avec le balise : balise_list_nom_zonebox
Set docCCs = ActiveDocument.SelectContentControlsByTag("balise_list_nom_zonebox")
' If any content controls are found iterate through them and give the type.
If docCCs.Count <> 0 Then 'verifie qu'il y a des ContentControl liste_nom dans le doc
For Each objCC In docCCs
objCC.SetPlaceholderText Text:="coucou"
objCC.DropdownListEntries.Clear ' pour vider la liste déroulante
Next
'Balayage des item du excel
For Each cellule In ActiveSheet.Range("B2:B10") 'boucle de balayage de toutes les cellules
contenu_cellule_selectionner = Sheets("liste contacts").Cells(cellule.Row, 2)
If contenu_cellule_selectionner <> "" Then 'verifie que la cellule n'est pas vide
'si pas vide on essai de l'ajouter dans la liste_nom : balise_list_nom_zonebox
For Each objCC In docCCs
'Boucle pour balyé tous les item de la liste
Result = 0
For Each objLE In objCC.DropdownListEntries
If objLE.Text <> contenu_cellule_selectionner Then 'verifie que la cellule n'est pas déjà entrer dans la liste
Result = Result
Else
Result = Result + 1
End If
Next
'verifie si l'item existe deja
If Result = 0 Then
'il n'existe pas donc :
objCC.DropdownListEntries.Add contenu_cellule_selectionner
Else
'MsgBox "Liste Nom : l'item existe déjà"
End If
Next 'fin de boucle de la liste des ContentControl avec le balise : balise_list_nom_zonebox
End If 'fin de la verif cellule vide
Next 'fin de boucle de balayage du fichier excel
Else 'pas de ContentControl dans le doc
MsgBox "Erreur dans le document"
End If
'arret de la lecture du fichier excel
MyWorkbook.Close savechanges:=True
Set xlAppList = Nothing
Set MyWorkbook = Nothing
End Sub
Sub mettre_a_jour_liste_nom()
Dim objCC As ContentControl
Dim docCCs As ContentControls
' Get the collection of all content controls with this tag.
ExcelFile = ThisDocument.Path + "\contacts04-09-2015.xls" 'mettre le chemin du fichier
Set xlAppList = CreateObject("Excel.Application")
Set MyWorkbook = xlAppList.Workbooks.Open(ExcelFile, 0, , , "") 'demarrage de la lecture du fichier excel
MyWorkbook.Sheets("liste contacts").Select 'selection de la feuille "liste contacts"
'selectionne tous les ContentControl avec le balise : balise_list_nom_zonebox
Set docCCs = ActiveDocument.SelectContentControlsByTag("balise_list_nom_zonebox")
' If any content controls are found iterate through them and give the type.
If docCCs.Count <> 0 Then 'verifie qu'il y a des ContentControl liste_nom dans le doc
For Each objCC In docCCs
objCC.SetPlaceholderText Text:="coucou"
objCC.DropdownListEntries.Clear ' pour vider la liste déroulante
Next
'Balayage des item du excel
For Each cellule In ActiveSheet.Range("B2:B10") 'boucle de balayage de toutes les cellules
contenu_cellule_selectionner = Sheets("liste contacts").Cells(cellule.Row, 2)
If contenu_cellule_selectionner <> "" Then 'verifie que la cellule n'est pas vide
'si pas vide on essai de l'ajouter dans la liste_nom : balise_list_nom_zonebox
For Each objCC In docCCs
'Boucle pour balyé tous les item de la liste
Result = 0
For Each objLE In objCC.DropdownListEntries
If objLE.Text <> contenu_cellule_selectionner Then 'verifie que la cellule n'est pas déjà entrer dans la liste
Result = Result
Else
Result = Result + 1
End If
Next
'verifie si l'item existe deja
If Result = 0 Then
'il n'existe pas donc :
objCC.DropdownListEntries.Add contenu_cellule_selectionner
Else
'MsgBox "Liste Nom : l'item existe déjà"
End If
Next 'fin de boucle de la liste des ContentControl avec le balise : balise_list_nom_zonebox
End If 'fin de la verif cellule vide
Next 'fin de boucle de balayage du fichier excel
Else 'pas de ContentControl dans le doc
MsgBox "Erreur dans le document"
End If
'arret de la lecture du fichier excel
MyWorkbook.Close savechanges:=True
Set xlAppList = Nothing
Set MyWorkbook = Nothing
End Sub
Bonjour,
Sans problème je ne remet pas votre disponibilité en cause mais l'agressivité de eriic pour une simple sujet.
Au contraire je trouve que vous répondez plutôt souvent, bon même si mon sujet est resté ouvert sur votre forum vu que pas encore de réponse au mystère, mais je reste satisfaite de la composition du forum en général.
Bien a vous. Pour moi ce sujet est "résolu" histoire de clôturer le débat.
Sans problème je ne remet pas votre disponibilité en cause mais l'agressivité de eriic pour une simple sujet.
Au contraire je trouve que vous répondez plutôt souvent, bon même si mon sujet est resté ouvert sur votre forum vu que pas encore de réponse au mystère, mais je reste satisfaite de la composition du forum en général.
Bien a vous. Pour moi ce sujet est "résolu" histoire de clôturer le débat.