associer une variable à une autre

traputaca

XLDnaute Nouveau
Bonjour,

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.

Merci d'avance,

charles
 

Orodreth

XLDnaute Impliqué
Re : associer une variable à une autre

Bonjour,

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")
)

Cordialement,
Orodreth
 
Dernière édition:

traputaca

XLDnaute Nouveau
Re : associer une variable à une autre

Actuellement j'ai :

Le nom du fichier dans la colonne B : classeur1.xlsx
le chemin du dossier colonne C : C:\test base donnée\base de donnée\

ensuite chemin = dossier & fichier pour former le chemin complet.

le top serait d'avoir le chemin Complet colonne C et un nom que l'on donne au fichier colonne B

comme sa on sélectionne un nom dans la liste déroulante, le nom s'associe a un chemin (case adjacente) et a partir du chemin peut ouvrir le fichier.


j'ai essayer ton bout de code, il me met toujours classeur non référencé .. je ne comprend pas exactement la totalité de ton programme.

merci de ta réponse rapide
 

Orodreth

XLDnaute Impliqué
Re : associer une variable à une autre

Re,

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.

Merci.

Cordialement,
 

Discussions similaires

Réponses
3
Affichages
384