Utiliser une variable dans un adressage
Bonjour à tous,
je cherche actuellement a me servir du contenu d'une cellule afin de l'intégrer à un lien permettant l'ouverture d'un fichier commandé à partir d'un bouton.
Je me suis servi des différents tuto de ce site mais je n'ai pas trouver comment intégrer ma variable dans l'adresse.
Voici mon code:
Sub variables()
'Déclaration de la variable
Dim ma_variable As String
'Attribution d'une valeur à la variable
ma_variable = Cells(12, 6)
'Affichage de la valeur de ma_variable dans une MsgBox
MsgBox ma_variable
End Sub
Sub PPSPS() 'Nom du bouton'
Workbooks.Open "C:\USERS\Planchet\ma_variable\W-E.xlsx"
End SubEst ce que le fait de mettre End Sub à la fin de ma déclaration de variable annule sa valeur?
Cordialement
Planchet
Bonjour,
Tu as zappé le chapitre sur la durée de vie des variable
Des variables peuvent être déclarées au niveau procédure ou au niveau module. Au niveau module, elles sont accessibles par toutes les procédures du module (et si déclarées publique par toutes les procédures du projet).
Au niveau procédure, les variables n'ont d'existence que dans la procédure et tant que la précédure est en cours, elles s'éteignent en fin de procédure (à l'exception des variables déclarées statiques, qui conservent leur valeur lors d'un appel ultérieur de la procédure concernée).
Toi tu as besoin de ta variable dans la procédure qui ouvre le classeur, c'est donc là au plus simple qu'il faut la mettre :
Sub PPSPS()
Dim ma_variable As String
ma_variable = Cells(12, 6)
Workbooks.Open "C:\USERS\Planchet\" & ma_variable & "\W-E.xlsx"
End SubEt attention à son utilisation dans l'indication du chemin : ta rédaction de la liigne n'avait aucune chance d'être exécutée même si la variable avait été valide.
Outre cette façon de procéder, tu en as quantité d'autres, selon tes besoins...
Tu utiliseras ta variable dans plusieurs procédures :
- tu la déclares niveau module
- il faudra une procédure pour lui affecter sa valeur (beaucoup de possibilité aussi : les procédures utilisatrices, à l'ouverture du classeur, chaque fois que la valeur change....)
- tu peux aussi te passe de variable et remplacer par une fonction :
Function ma_var_chemin() As String
ma_var_chemin = Cells(12, 6)
End Functionque tu appelles selon besoins
-tu peux combiner variable et fonction
etc.
Attention aussi à tes appels avec Cells, sans qualificateur d'objet, qui donc se réfère à la feuille active (il faut donc que tu soies assuré qu'à chaque utilisation, la feuille active est bien la bonne, sinon surprise !)
Cordialement
Super ça marche impec.
Merci beaucoup
Cordialement
Planchet