Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je suis un débutant en Vba.
Je cherche à créer une base de donnée de fichier excel, afin que, à partir d'une macro, je puisse ouvrir rapidement n'importe quel fichier de ma base de donnée.
la base de donnée décompose un chemin de fichier tel que :
"C:\test base donnée\base de donnée\classeur1.xlsx" en 2 parties :
Chemin : C:\test base donnée\base de donnée\
Nom : classeur1.xlsx
actuellement, j'arrive à rentré ces 2 paramètres dans ma base de donnée via formulaire excel,
ensuite ma macro active une fenêtre avec :
une liste déroulante : se basant sur ma plage de donnée de "Nom", donc on retrouve dedans "classeur1.xlsx" , etc ..
et un bouton ouvrir se basant sur le programme suivant :
Code:
Sub Travail()
Dim Dossier As String, Fichier As String, Chemin As String, variable As String
variable = Me.ComboBox1.Value
Dossier = "C:\test base donnée\base de donnée\"
Fichier = variable
Chemin = Dossier & variable
Dim Presence As Boolean
Presence = False
For Each w In Workbooks
If w.Name = Fichier Then Presence = True
Next w
If Presence = True Then
Workbooks(Fichier).Activate
Else
Workbooks.Open Filename:=Chemin
End If
End Sub
avec le terme "ComboBox1" étant la valeur de ma sélection dans ma liste déroulante.
Ici on peut voir que seul "Fichier" est une variable, le chemin, lui est fixe.
or ma base de donnée est a 2 colonnes, Nom et Chemin, j'aimerais associer a chaque Nom le chemin qui va avec. afin de pouvoir rentrer dans ma base des fichiers n'importe où dans l'explorateur.
Pourriez vous m'indiquer une solutions ?
EDIT: j'ai pensé à un truc du style : en déclarant "x" comme chiffre, associé à tous B(x) une variable C(x) et déclarant C(x) comme ma variable "Dossier"
sachant que la colonne B de ma base est le "Nom" et la colonne C le "chemin"
je ne sais pas si j'ai été très clair, au besoin je peux joindre mon fichier.
Si j'ai bien compris, tu sélectionnes ton classeur via un menu déroulant, et tu veux retrouver le chemin associé à ce classeur de manière dynamique ?
En partant du principe que ton chemin et ton classeur se trouvent sur la même ligne, dans deux colonnes adjacentes, tu peux tester ceci:
Code:
Sub Travail()
Dim Dossier As String, Fichier As String, Chemin As String, variable As String
Fichier = Cstr(Me.ComboBox1.Value)
Dossier = vbNullString
Dim pcs_Classeurs As Long
For pcs_Classeurs = 2 to ActiveSheet.Range("C" & cstr(Rows.Count)).End(xlup).row
If ActiveSheet.Range("B" & Cstr(pcs_Classeurs)).value = Fichier Then
Dossier = ActiveSheet.Range("C" & Cstr(pcs_Classeurs)).value
Exit For
End If
next pcs_Classeurs
If Dossier = vbNullString Then
'On alerte l'utilisateur
Msgbox "Classeur non référencé"
'On sort
Exit Sub
End If
Chemin = Dossier & Fichier
Dim Presence As Boolean
Presence = False
For Each w In Workbooks
If w.Name = Fichier Then Presence = True
Next w
If Presence = True Then
Workbooks(Fichier).Activate
Else
Workbooks.Open Filename:=Chemin
End If
End Sub
Il boucle dans ta feuille pour retrouver le dossier lié au classeur, et s'il ne trouve aucun dossier, il sort.
Sinon, il référence le dossier, et ton programme reprend son cours normal.
Tu peux aussi enlever ta variable "variable", elle ne sert à rien vu qu'elle est redondante de la variable "Fichier".
Et par rapport à mon code, je préconise de remplacer "ActiveSheet" par "ThisWorkbook.Worksheets("Nom_De_Ta_Feuille")" (voire même de référencer CE classeur précisément dans une variable objet, pour en avoir la référence de manière simple:
Code:
Dim myMaster_WBK As WorkBook
Set myMaster_WBK = Workbooks("Nom_Du_Classeur_Maitre")
Est-ce que tu peux mettre un classeur exemple de ta problématique ? (Si possible, enregistrer au format Excel 97/2003, je ne suis pas sur une version 2007/2010).
Comme ça, je regarde l’exécution de ton code, et je vois où ça plante.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD