Navigation entre deux classeurs

Bonjour,

J'active une macro qui créé un nouveau classeur (ce classeur ne sera pas sauvegardé). Je reviens ensuite sur le classeur principal. Cependant, je n'arrive pas à revenir sur le second classeur par la suite.

J'arrive à faire A -> B -> A mais je suis bloqué pour retourner sur B. Ci-dessous le début de mon code. Que puis-je faire?

'Copie des données et création du classeur (2)
Feuil22.Select
Range(Cells(6, 1), Cells(100000, 13)).Select
Selection.Copy
Dim classeur As Workbook
Set classeur = Workbooks.Add
ActiveCell.PasteSpecial Paste:=xlPasteAll

Sheets.Add After:=Worksheets(Worksheets.Count())

'Retour sur le classeur (1)
ThisWorkbook.Activate
Feuil6.Select
Range("B1").Select
Range(Cells(1, 2), Cells(1000, 3)).Select
Selection.Copy

'Retour sur le classeur (2) => je suis bloqué !!!

Merci par avance,

Bonjour Romain, bonjour le forum,

La règle d'or en VBA c'est d'éviter autant que possible les Select (ou Activate) inutiles. Ils ne font que ralentir l'exécution du code et sont source de nombreux bugs.

Si j'ai bien compris, ton code modifié :

Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)

Set CS = ThisWorkbook 'définit le classeur source CS
Set OS = CS.Worksheets("Feuil22") 'définit l'onglet source OS
Workbooks.Add 'ajoute un classeur vierge
Set CD = ActiveWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets(1) 'définit l'onglet destination OD (le premier onglet du classeur destination)
'copie la plage A6:M100000 de l'onglet source et la colle dans A1 de l'onglet destination
OS.Range(OS.Cells(6, 1), OS.Cells(100000, 13)).Copy OD.Range("A1")
CD.Sheets.Add After:=CD.Worksheets(Worksheets.Count()) 'ajoute un onglet au classeur destination en dernière position
Set OD = ActiveSheet 'redéfinit l'onglet destination OD
Set OS = CS.Worksheets("Feuil6") 'redéfinit l'onglet source OS
'copie la plage B1:C100 de l'onglet source et la colle dans A1 de l'onglet destination
OS.Range(OS.Cells(1, 2), OS.Cells(1000, 3)).Copy OD.Range("A1")
End Sub

Bonjour ThauThème,

Merci pour ta réponse et ton conseil. Effectivement utiliser Activate et Select est le plus facile mais mieux vaut prendre le temps de déclarer les variables.

J'en profite pour te demander un autre conseil. Dans la suite de ma macro, je souhaite enregistrer le classeur CD (classeur destination) qui vient d'être créé. Je souhaite qu'il s'enregistre dans le même dossier que le classeur source (emplacement variable) et que le nom du fichier soit récupéré dans une cellule. J'ai essayé le code ci-dessous mais sans succès...

Fichier = Worksheets("Paramétrage").Range("G29")
ChDir CS.Path
Chemin = Dir(CS.Path & Fichier)
CD.SaveAs Chemin

Merci par avance,

Re,

Tu y étais presque !...

Sub Macro1()
Dim CH As String
Dim Fichier As String

CH = CS.Path & "\"
Fichier = CS.Worksheets("Paramétrage").Range("G29").Value 'ou Fichier = CD.Worksheets("Paramétrage").Range("G29").Value
CD.SaveAs CH & Fichier
End Sub

[Édition]

Et pour ce fil : https://forum.excel-pratique.com/viewtopic.php?f=2&t=138939, tu n'as rien dit...

Parfait encore merci !

Rechercher des sujets similaires à "navigation entre deux classeurs"