Liste déroulante utilisant base de données excel

Résolu/Fermé
madabeach972 Messages postés 9 Date d'inscription vendredi 12 juin 2015 Statut Membre Dernière intervention 8 septembre 2015 - 4 sept. 2015 à 16:11
madabeach972 Messages postés 9 Date d'inscription vendredi 12 juin 2015 Statut Membre Dernière intervention 8 septembre 2015 - 8 sept. 2015 à 09:30
Bonjour,

Je tente de nouveau de laisser un message ici, mon précédent message sur modèle de fichier word n'avait pas eu gain de cause...

Je souhaite créer un document qui servira de compte rendu, sur ce document, j'ai les premiers champs : Nom , Prénom , email , avant je les remplissait directement grâce à des champs de "zone de texte" sur le document word, de façon à ce qu'une fois protéger on ne puisse qu'écrire dans les champs définis pour enregistrer sous par la suite.

J'ai vu qu'on pouvait, faire une liste déroulante en utilisant comme source de données un fichier excel qui contient les infos.

J'ai donc un fichier avec 3 colonnes :

Nom
Prénom
Email

qui s'appelle : BDDcontacts.xlsx
Un document word : CR RDV SUIVI.docm

Ces deux documents sont dans un seul et unique dossier sur mon bureau pour l'instant.

J'ai fais ce code dans une macro nommée : MajListbox

Sub MajListbox()
Dim Xl As Excel.Application, Wbk As Excel.Workbook

Set Xl = CreateObject("Excel.Application")
Xl.Visible = False
Set Wbk = Xl.Workbooks.Open("BDDcontacts.xlsx")
ThisDocument.FormFields("Listbox1").DropDown.ListEntries.Clear
With Wbk.Worksheets(1)
For l = 2 To 13
ThisDocument.FormFields("Listbox1").DropDown.ListEntries.Add.Cells(l, "A").Text
Next l
End With
Wbk.Close
Set Xl = Nothing
End Sub


Dans ThisDocument jai fais :
Private Sub Document_Open()
Call MajListbox
End Sub


Et beh même après avoir protégé le fichier, CA MARCHE QUEUDAL :(

Je dois être une bille;

Je sais qu'il y a des sujets un peu comme le mien, mais moi c'est mon code qui me pose problème du coup je vous demande de l'aide.
HELP, après 4h dessus je comprend plus le code hihi.

A voir également:

2 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
4 sept. 2015 à 16:44
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
1
madabeach972 Messages postés 9 Date d'inscription vendredi 12 juin 2015 Statut Membre Dernière intervention 8 septembre 2015
4 sept. 2015 à 22:55
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
0
m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024 11 271
8 sept. 2015 à 00:17
Bonjour,

A titre d'info, je ne suis, bizarrement, pas toujours disponible !
Ben oui, j'ai une vie aussi !

m@rina
0
madabeach972 Messages postés 9 Date d'inscription vendredi 12 juin 2015 Statut Membre Dernière intervention 8 septembre 2015 > m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024
8 sept. 2015 à 09:30
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.
0