Copie sur le mauvais classeur

  • Initiateur de la discussion Pierre
  • Date de début
P

Pierre

Guest
Bonsoir toutes et tous,

J'ai un petite macro qui me sert à copier une partie d'une feuille sur un modèle excel. Mais lorsque plusieurs classeurs sont ouverts simultanément, la macro recopie sur le premier classeur suivant et non sur le modèle qui a été ouvert. Quelle modification dois-je apporter au code pour m'assurer que la copie sera toujours faite sur le fichier .xlt?
Voici le code:

Sub Publication()
Application.Goto Reference:="R1C38"
Range("AM1:BT37").Select
Workbooks.Add Template:= _
"C:\Program Files\Microsoft Office\Modèles\Horaire.xlt"
ActiveWindow.ActivateNext
Selection.Copy
ActiveWindow.ActivateNext
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select
End Sub

J'imagine que c'est ActivateNext qui me crée ma difficulté, mais que mettre à la place?


Déjà grand merci.

Pierre
 
@

@Christophe@

Guest
Bonjour a tous

Ton activewindows.activenext, active la prochaine fenêtre active, mais celle si n'est pas nécessairement Horaire.xlt, donc modifie ton code comme suite


Sub Publication()
Application.Goto Reference:="R1C38"
Range("AM1:BT37").Select
Workbooks.Add Template:= _
"C:\Program Files\Microsoft Office\Modèles\Horaire.xlt"
Wokbooks("NOM DU FICHIER DE DEPART").Activate
Selection.Copy
Wokbooks("Horaires.xlt").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select
End Sub


Bonne journée

@Christophe@
 
P

Pierre

Guest
Grand merci à vous deux.

J'ai finalement repris le code de @CHRISTOPHE@ en modifiant juste une ligne: Wokbooks("Horaires.xlt").Activate ne répondait pas je lui ai substitué Windows ("Horaire 1").Activate qui semble marcher.

Milles remerciements.


Pierre
 
W

William

Guest
Re-bonjour Pierre et Christophe,

Je n'aime pas trop la fonction Windows...Activate.

Mais apparement, une erreur s'était glissé dans les code que Christophe et moi t'avons indiqués.

Il s'agissait de WorkBooks, et non Wokbooks... Mea Culpa

Si "Horaire 1" est une feuille, et que tu lance ta macro alors qu'une autre feuille du fichier "Horaires.xlt" est activée, c'est sur cette feuille là que la macro se déroulera...

D'où l'intérêt (peut-être), d'écrire :

Workbooks("Horaires.xlt").Worksheets("Horaires1").Activate


A toi de voir, et de tester...

Courage,

@+

William
 
P

Pierre

Guest
Re salut,
Pour le Wokbooks, j'avais corrigé. Ne pas connaître VBA n'empêche pas de connaître l'anglais, et comme nous ne parlons pas de cuisine au Wok...:eek:)))
Par contre Workbooks("Horaires.xlt").Worksheets("Horaires1").Activate
ne fonctionne pas non plus après adaptation.
Il est vrai que le modèle Horaire.xlt, lorsqu'il est ouvert, se nomme automatiquement Horaire 1, la feuille étant le nom par défaut. D'où mon intérrogation: Dois-je laisser Horaire.xlt dans la ligne??

En tout cas grand merci pour votre intérêt.


Pierre
 
W

William

Guest
Bon, s'il n'y a qu'une seuille feuille dans Horaires.xlt, Il est effectivement possible - sans risque - de faire tourner la macro avec la fonction Windows....Activate.

Il faut cependant être certain qu'aucune autre feuille ne sera créée dans le fichier...

Mais, je viens de voir une dernière boulette : il y a apparemment un espace entre Horaire et 1, dont je n'avais pas tenu compte...

A Bon entendeur...


@+

William
 

Discussions similaires

Réponses
2
Affichages
80