Macro pour modifier macro

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 !

Laulau23

XLDnaute Nouveau
Bonjour,

J'ai effectuer plusieurs recherche sans trouver mon bonheur, j'espère que vous pourrez m'aider.

J'ai créé une macro qui va récupérer des fichiers començant par une certaines désignations (fichiers dont la terminologie change tout le temps), qui copie une feuille et la recopie dans mon classeur. Cette étape est effectué avec 2 fichiers différent pour effectuer une comparaison après. Jusque là pas de problème.
Mon problème c'est que le chemin d'accès dans lequel se trouve ces 2 fichiers lui aussi change en fonction de quand je dois lancer la macro. Seulement un dossier change de nom sous la forme \LX30\, \LX31\, \LX32\,... sinon tout le reste du chemin d'accès est identique.
Je souhaiterai donc trouver un système qui me demande au préalable dans quel dossier "LX" il doit aller chercher le fichier et qui ira donc remplacer dans ma macro toutes les valeurs 30 par 31 (par exemple).

Pour information, les fichiers se trouvent sur un chemin réseau, ce qui complique un peu la chose et dans mon module j'ai plusieurs macro identique c'est pour cela que je cherche une sorte de fonction qui effectuerai un "remplacer tout"

Voici un bout de mon code

Dim R As String
R = ThisWorkbook.FullName
R = Left(R, 75) & "*"
MsgBox R
'le nom tronquer du classeur et chemin.

Fichier = Dir("\\toto\test\LX30\CO\M533" & "*")
'Cherche Fichier contenant une partie du texte...
MsgBox Fichier
Set Wbk = Workbooks.Open("\\toto\test\LX30\CO\" & Fichier)

Merci d'avance pour votre aide
 
Re : Macro pour modifier macro

bonjour à tous

je me lance, allez, j'écrirai:
Code:
Dim R As String
R = ThisWorkbook.FullName
R = Left(R, 75) & "*"
MsgBox R
'le nom tronquer du classeur et chemin.

[COLOR="Red"]dos = MsgBox("Numéro du répertoire à sélectionner";VbOk)
Fichier = Dir("\\toto\test\LX"&dos&"\CO\M533\&"*")[/COLOR]

Fichier = Dir("\\toto\test\LX30\CO\M533" & "*")
'Cherche Fichier contenant une partie du texte...
MsgBox Fichier
Set Wbk = Workbooks.Open("\\toto\test\LX"[COLOR="Red"]&dos&[/COLOR]"\CO\" & Fichier)

je n'ai pas testé

à +
 
Re : Macro pour modifier macro

Merci pour vos réponses, elles me semblent assez logique et j'ai l'impression d'avoir un peu avancé, voici donc mon retour après test :

Pour
dos = InputBox("Numéro du répertoire à sélectionner";VbOk)
Il ne me le prenait pas, VBA préfère
dos = InputBox("Numéro du répertoire à sélectionner", vbOK)

Ensuite pour
Fichier = Dir("\\toto\test\LX"&dos&"\CO\M533\&"*")
Il me marque des erreurs et j'ai les ai résolu en retirant les guillemets
Fichier = Dir("\\toto\test\LX&dos&\CO\M533\&"*")

Sinon j'ai l'impression qu'il pointe bien sur le bon dossier mais j'ai un message d'erreur, il ne me trouve pas le fichier. Du moins il me surligne en jaune :

Set Wbk = Workbooks.Open("\\toto\test\LX&dos&\CO\" & Fichier)
 
Re : Macro pour modifier macro

Re-,

A tout hasard (non testé...)

en espaçant le dos ainsi :

Code:
Fichier = Dir("\\toto\test\LX" & dos & "\CO\M533\&"*")

Pour essai, déclare ta variable dos avec un D majuscule

Code:
dim Dos as byte
Par exemple

et en tapant le code Fichier = Dir...., tu tapes "dos" en minuscule
Il devrait s'écrire comme la variable (Dos) si c'est bien reconnu par Excel..

Bon courage
 
Re : Macro pour modifier macro

Merci les gars !!!!! Trop fort et trop réactif !!!!!

Je remets donc le code avec les corrections faites et qui fonctionnent

Dim R As String
Dim Dos as byte
R = ThisWorkbook.FullName
R = Left(R, 75) & "*"
MsgBox R
'le nom tronquer du classeur et chemin.

Dos = InputBox("Numéro du répertoire à sélectionner", vbOK)

Fichier = Dir("\\toto\test\LX" & Dos & "\CO\M533" & "*")
'Cherche Fichier contenant une partie du texte...
MsgBox Fichier
Set Wbk = Workbooks.Open("\\toto\test\LX" & Dos & "\CO\" & Fichier)

Merci beaucoup
 
Re : Macro pour modifier macro

Bonjour le forum😎,

ce fil est très intéressant.

J'ai le même souci mais en un peu moins compliqué :

dans de nombreux fichiers (environ une cinquantaine) il y a de nombreux modules comportant chacun de nombreuses macros.

Dans toutes ces macros, le chemin est écrit en dur : R:\repertoire\sous-répertoire\etc...

Or le disque réseau R n'a pas toujours la lettre R sur tous les postes,

donc je voudrais remplacer R:\ par la lettre du disque réseau sur l'ordi de l'utilisateur
(je récupère la lettre avec thisworkbook.path car le fichier sera mis sur le disque réseau),
je balaie tous les modules et toutes les macros de mes 50 fichiers et je remplace R:\ par la lettre de mon lecteur réseau (ex. Z:\)

Cela semble facile à dire, mais pour moi très compliqué à mettre en oeuvre, à tel point que je me demandais s'il ne valait pas mieux le faire à la main!!!)

Merci pour votre aide, si vous pouvez m'apporter des solutions.

Bises et bonne journée😉

C@thy😎
 
Re : Macro pour modifier macro

Arf... s'il n'y a pas de réponse, c'est que la question est trop dure... ou mal posée...

Ma demande est-elle incompréhensible...
ou irréalisable??? (j'opterais plutôt pour la 2ème réponse)

Bises à vous

C@thy
 
Re : Macro pour modifier macro

Bonsoir C@thy,

irréalisable
Jamais 😱

Tu aurais dû créer un nouveau fil, on va rarement dans les fils qui ont déjà des réponses 😉

Tu trouveras ci-joint un fichier avec un bout de code qui te permet de modifier un terme par un autre
dans les codes de tes classeurs

ATTENTION !
Fait en automatique, cela reste très dangereux ...
Bon, je fais quand même une demande avant de modifier définitivement le code

Il faut bien réfléchir au terme que l'on veut remplacer et au terme de rempalcement 😉

Bises
 

Pièces jointes

Re : Macro pour modifier macro

Coucou Bruno,

j'ai testé, cela marche parfaitement, sauf que lecteur n'est pas initialisé avec la lettre du lecteur de l'utilisateur, donc en fait il faut :
soit que je rajoute deux lignes faire un dim lecteur et récupérer le lecteur dans la variable lecteur par thisworkbook.path,
soit demander avant par inputbox la lettre du lecteur et remplacer R par cette lettre, et non par lecteur.

Mille mercis pour tes efforts, ta macro est très très intéressante, je vais rajouter l'inputbox et le tour est joué.

Bises et bonne journée,

C@thy
 
Re : Macro pour modifier macro

Bonjour Cathy🙂, Bruno🙂

petite remarque au passage, pour se dédouaner de la lettre du lecteur perso j'utilise le nom du serveur et ce précédé de 2 anti slash...
Code:
Dim chemin As String
chemin = "\\NomServeur\Dos1\Dos2\"

bonne journée
@+
 
Re : Macro pour modifier macro

Salut C@thy, salut Pierrot 😉

Coucou Bruno,
j'ai testé, cela marche parfaitement, sauf que lecteur n'est pas initialisé avec la lettre du lecteur de l'utilisateur, donc en fait il faut :
soit que je rajoute deux lignes faire un dim lecteur et récupérer le lecteur dans la variable lecteur par thisworkbook.path,
soit demander avant par inputbox la lettre du lecteur et remplacer R par cette lettre, et non par lecteur.
Mille mercis pour tes efforts, ta macro est très très intéressante, je vais rajouter l'inputbox et le tour est joué.
Bises et bonne journée,
C@thy
Désolé, je n'y avais pas pensé

Mieux vaut utiliser de nouveau le classeur de modification de code et mettre
en B3 : Lecteur
en B5 : Left(ThisWorkbook.Path, 2)

Comme ça tu auras la bonne syntaxe pour ton code

Perso, je ne mets jamais mes chemins d'accès au fichier en dur
Code:
Workbooks.Open "R:\Dossier\Sous-dossier\Fichier.xls"
à la place je passe par des variables
Code:
sPath = ThisWorkbook.Path &"\" : sFic = "Fichiers.xls"
Workbooks.Open sPath & sFic

A+
 
- 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

Discussions similaires

Réponses
4
Affichages
149
Réponses
2
Affichages
337
Réponses
2
Affichages
316
Retour