Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
W

William

Guest
Bonjour Pierre,

Tu pourrais tenter :

Wokbooks("Horaires.xlt").Sheets("zaza").Activate

Où Workbooks est le fichier Excel, et Sheets la feuille concernée...

Courage,

William
 
W

William

Guest
Bonjour Pierre.

Tout juste, il faut l'écrire à la place de cette ligne...

Mais je ne promet pas de résultat certain (vu mon niveau en VBA).

@+

William
 
@

@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...)))
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
 
P

Pierre

Guest
Re

Ca marche correctement avec Workbooks("Horaire1").Activate
Je crois que je vais garder cette formulation.
Grand merci à vous deux et excel-lente fin de journée.


Pierre
 

Discussions similaires

Réponses
2
Affichages
122
Réponses
5
Affichages
122
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…