Ne pas changer ma macro et pouvoir changer le nom de mon classeur

jihane

XLDnaute Junior
Bonjour à tous,


Je suis une petite débutante sur la programmation VBA. :eek:

Alors mon problème c'est que j'ai une macro déjà faite qui marche bien sur un classeur appelé "S1309.xlsx" sauf que j'aimerais l'utiliser chaque semaine sur un classeur différent (C'est à dire, la semaine prochaine pouvoir l'utiliser avec le "S1310.xlsx"). Cette macro utilise mon classeur précédent et 2 autres classeurs fixes (qui garde toujours la même appelation) et dans cette macro, on rencontre souvent des termes comme ce dernier:

Windows("S1309.xlsx").Activate

Est-ce qu'il serait possibe de faire appel chaque fois à un nouveau classeur tout en gardant ma macro, ou ce qui serait agréable mettre un boutton avec ma macro qui me demande le nom du classeur et qui effectue la macro.


Merci pour votre aide :D
 

Dranreb

XLDnaute Barbatruc
Re : Ne pas changer ma macro et pouvoir changer le nom de mon classeur

Bonjour.
Il devrait même être possible de proposer mieux avec un petit userform juste muni d'un bouton qui lance la macro quand le classeur est actif.
Joignez votre classeur de macros qui fonctionne bien sur votre "S1309.xlsx". En format .xls, s'il vous plait, que je n'aie pas à convertir (mal) un .xlsm
À +
 

néné06

XLDnaute Accro
Re : Ne pas changer ma macro et pouvoir changer le nom de mon classeur

Bonsoir Dranreb, Kjin,Jihane,

Peut-être aussi avec la piste de VBAProject(PERSO.XLS):
C'est peut-être une bêtise mais si cela peut faire avancer "le Schilmblic" ?

A+

René
 

jihane

XLDnaute Junior
Re : Ne pas changer ma macro et pouvoir changer le nom de mon classeur

Bon voilà ma macro que je copie colle dans mon fichier "S1309.xlsx" et que je lance et qui marche.

J'aimerais pouvoir par exemple la copier coller sur "S1310.xlsx" de la semaine prochaine ou "S1311.xlsx" de celle d'après sans devoir changer les 3 bouts de code suivant que j'ai dans ma macro:


'Récupérer la 1ère ligne du fichier "art acif base itc.xlsx"

Windows("art actif base itc.xlsx").Activate
Rows("1:1").Select
Range("L1").Activate
Selection.Copy
Windows("S1309.xlsx").Activate
Rows("1:1").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste

et dans:

'Récupération de la formule de la colonne N

Windows("S1309.xlsx").Activate
Sheets("art sans doublon").Range("N2:N" & Range("A65536").End(xlUp).Row).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],[COMPILATION_COUVERTURE.xls]BASE!C7:C60,34,FALSE)"
Selection.FillDown

et dans:

'Copier la liste de choix

Windows("art actif base itc.xlsx").Activate
Sheets("Listes de choix").Select
Sheets("Listes de choix").Copy Before:=Workbooks( _
"S1309.xlsx").Sheets(1)
 

Dranreb

XLDnaute Barbatruc
Re : Ne pas changer ma macro et pouvoir changer le nom de mon classeur

Bonjour.
Vous enlèverez tous les Select et Activate. Ils ne servent absolument à rien.
Et ne copiez pas la macro: exécutez la lorsque votre fichier cible est actif, c'est tout.
Ça commencera dans ce style:
VB:
Dim ClasSrc As Workbook
Set ClasSrc = Workbooks("art actif base itc.xlsx")
ClasSrc.Worksheets(1).Rows(1).Copy
ActiveSheet.Rows(1).PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
   SkipBlanks:=False, Transpose:=False
À +
 

Dranreb

XLDnaute Barbatruc
Re : Ne pas changer ma macro et pouvoir changer le nom de mon classeur

Zut ! J'ai envoyé un autre message au lieu de modifier le dernier…
Ce sera dans ce style:
VB:
Dim ClasSrc As Workbook, FeuiASDbl As Worksheet
Set ClasSrc = Workbooks("art actif base itc.xlsx")
ClasSrc.Worksheets(1).Rows(1).Copy
ActiveSheet.Rows(1).PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
   SkipBlanks:=False, Transpose:=False

'Récupération de la formule de la colonne N
Set FeuiASDbl = ActiveWorkbook.Worksheets("art sans doublon")
FeuiASDbl.Range("N2:N" & FeuiASDbl.[A65536].End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-2],[COMPILATION_COUVERTURE.xls]BASE!C7:C60,34,FALSE)"

'Copier la liste de choix
ClasSrc.Worksheets("Listes de choix").Copy Before:=ActiveWorkbook.Sheets(1)
À +
 

Discussions similaires

Statistiques des forums

Discussions
312 355
Messages
2 087 549
Membres
103 588
dernier inscrit
Tom59300Tom