Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Variables dans plusieurs classeurs

1 réponse
Avatar
Marion
Bonjour,
Je d=E9bute avec les macros et j'ai besoin de votre aide.
Voici mon probl=E8me :
J'ai un dossier contenant 15 fichiers identiques, qui ont tous 6
feuilles.
Je souhaite cr=E9er un 16=E8me fichier appell=E9 "Lancement" =E0 partir duq=
uel
je lancerai la macro "actualisation".
Dans le fichier "Lancement", l'utilisateur entre le mois en cours en
D6, le mois pr=E9c=E9dent en D7 et son nom en H6. Ces donn=E9es sont =E0
choisir dans des listes d=E9roulantes.
L'utilisateur clique ensuite sur une image qui lance la macro
"actualisation".

Macro "actualisation" :
Cette macro doit ouvrir chacun des 15 fichiers du dossier puis
effectuer une action puis enregistrer et fermer les fichiers.
Jusqu'ici, j'ai r=E9ussi avec le code suivant :

Sub actualisation ( )
ChDir "Y:\Sauvegardes\xxxxxxxx"
Workbooks.Open Filename:=3D _
"Y:\Sauvegardes\xxxxxxx\fichier1.XLS"
Application.Run "replacepl"
ActiveWorkbook.Save
ActiveWorkbook.Close
End sub

Maintenant, ce que doit faire la macro "replacepl" :

1) Elle doit, sur toutes les feuilles, faire un replace du mois
pr=E9c=E9dent par le mois en cours

J'avais fait cela :

Sheets("BA").Activate
Range("P79:P91").Select
SELECTION.replace What:=3D"JUN", Replacement:=3D"JUL", LookAt:=3DxlPart,
_
SearchOrder:=3DxlByRows, MatchCase:=3DFalse, SearchFormat:=3DFalse,
_
ReplaceFormat:=3DFalse
Sheets("CA").Activate
Range("P79:P91").Select
SELECTION.replace What:=3D"JUN", Replacement:=3D"JUL", LookAt:=3DxlPart,
_
SearchOrder:=3DxlByRows, MatchCase:=3DFalse, SearchFormat:=3DFalse,
_
ReplaceFormat:=3DFalse

Etc. sur toutes les feuilles (il doit y avoir plus court, mais je
d=E9bute, hein !)

Le pb : je voudrais que "JUN" et "JUL" soient des variables, qui
prendraient la valeur des cellules D7 et D6 de mon fichier
"Lancement".

2) Elle doit, sur les "feuil1" de chaque fichier, inscrire en Q8 le
nom entr=E9 en H6 dans le fichier "lancement".
Quelquechose comme =E7a :
Sheets("Feuil1").Activate
Range("Q8").Select
ActiveCell.la fameuse variable


Voila !

J'ai essay=E9 de d=E9clarer les variables, et puis en chechant sur ce
forum, j'ai vu qu'il y avait aussi des histoires de modules diff=E9rents
et de d=E9claration de variables comme publiques etc... c'est
passionnant mais je dois finir ce projet en peu de temps, alors je
vous appelle =E0 l'aide !

Si vous aviez un moment pour m'aider, ce serait vraiment sympa.

Merci d'avance !

Marion

1 réponse

Avatar
Daniel
Bonsoir.

Au choix :

1. Remplace :
Application.Run "replacepl"
par
replacepl [D6],[D7]
et sub replacepl()
par
sub replacepl(Mois1, Mois2)
Mois1 et Mois2 récupérant les valeurs des deux cellules.

2. Si les deux macros sont dans le même classeur, tu peux aussi décrire les
variables comme variables publiques en tête d'un module :
Public Mois1 as Integer
Public Mois2 as Integer
Tu les renseignes dans "actualisation" et tu récupères leur valeur dans
replacepl.

Cordialement.
Daniel
"Marion" a écrit dans le message de news:

Bonjour,
Je débute avec les macros et j'ai besoin de votre aide.
Voici mon problème :
J'ai un dossier contenant 15 fichiers identiques, qui ont tous 6
feuilles.
Je souhaite créer un 16ème fichier appellé "Lancement" à partir duquel
je lancerai la macro "actualisation".
Dans le fichier "Lancement", l'utilisateur entre le mois en cours en
D6, le mois précédent en D7 et son nom en H6. Ces données sont à
choisir dans des listes déroulantes.
L'utilisateur clique ensuite sur une image qui lance la macro
"actualisation".

Macro "actualisation" :
Cette macro doit ouvrir chacun des 15 fichiers du dossier puis
effectuer une action puis enregistrer et fermer les fichiers.
Jusqu'ici, j'ai réussi avec le code suivant :

Sub actualisation ( )
ChDir "Y:Sauvegardesxxxxxxxx"
Workbooks.Open Filename:= _
"Y:Sauvegardesxxxxxxxfichier1.XLS"
Application.Run "replacepl"
ActiveWorkbook.Save
ActiveWorkbook.Close
End sub

Maintenant, ce que doit faire la macro "replacepl" :

1) Elle doit, sur toutes les feuilles, faire un replace du mois
précédent par le mois en cours

J'avais fait cela :

Sheets("BA").Activate
Range("P79:P91").Select
SELECTION.replace What:="JUN", Replacement:="JUL", LookAt:=xlPart,
_
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse,
_
ReplaceFormat:úlse
Sheets("CA").Activate
Range("P79:P91").Select
SELECTION.replace What:="JUN", Replacement:="JUL", LookAt:=xlPart,
_
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse,
_
ReplaceFormat:úlse

Etc. sur toutes les feuilles (il doit y avoir plus court, mais je
débute, hein !)

Le pb : je voudrais que "JUN" et "JUL" soient des variables, qui
prendraient la valeur des cellules D7 et D6 de mon fichier
"Lancement".

2) Elle doit, sur les "feuil1" de chaque fichier, inscrire en Q8 le
nom entré en H6 dans le fichier "lancement".
Quelquechose comme ça :
Sheets("Feuil1").Activate
Range("Q8").Select
ActiveCell.la fameuse variable


Voila !

J'ai essayé de déclarer les variables, et puis en chechant sur ce
forum, j'ai vu qu'il y avait aussi des histoires de modules différents
et de déclaration de variables comme publiques etc... c'est
passionnant mais je dois finir ce projet en peu de temps, alors je
vous appelle à l'aide !

Si vous aviez un moment pour m'aider, ce serait vraiment sympa.

Merci d'avance !

Marion