Excel-Valeur Générique

Bonjour,

Je suis actuellement en train de faire une macro de copie sur Excel.

Mon problème est que je fais des basculements entre 2 fichiers Excel.

  • L’un est nommé « Macro de copie », il ne pose pas de problème
  • L’autre peut être nommé n’importe comment (Classeur, etc
    ), et je voudrais pouvoir basculer sur lui sans avoir besoin de lui donner une valeur fixe dans le code (sachant que les 2 fichiers Excel sont ouverts.

Y a-t-il un code permettant de passer outre « Classeur1.xlsx » ?

Windows("Classeur1.xlsx").Activate
ActiveWindow.DisplayHeadings = True
Cells.Select
Range("A19").Activate
Selection.Copy
Windows("Macro de Copie.xls").Activate
Windows("Classeur1.xlsx").Activate
Workbooks.Add

C’est donc pourquoi je souhaiterai affecter à mon classeur1.xlsx une valeur générique plutôt qu’une valeur fixe et si vous connaissiez le code me permettant cela, vous permettriez à mon neurone de papy de pouvoir se rendormir.:riva:

Par avance merci.

Ca te sert à quoi tous tes activate et tes select pour faire une simple copie ?
On peut très bien faire une copie sans rendre active la feuille correspondante.
Et pour activer un classeur, ce n’est pas windows, c’est workbook et sheet

Un fichier excel, vu du VBA (ta macro), est un objet workbook
Donc dans ton cas, tu as deux classeurs d’ouvers, workbooks(1) et workbooks(2)
Il suffit que tu repères lequel a pour nom “Macro de copie” et ensuite tu t’adresseras à l’autre par workbooks(x)
(x représente le numéro que tu auras auparavant déterminé)

Tiens mais c’est Gcc ! :hello:

En fait, je fais ca via une automatisation, je ne connais que très peu le vba.
Ca marchait super suite pour la dernière conversation que l’on a eu mais depuis, on m’a annoncé que le fichier concerné pouvait avoir n’importe quel nom.
Il faut donc que je trouve une solution pour arriver à faire el plus simple possible pour des gens qui ne savent même aps activer une macro :frowning:

Dire que c’est pour dépanner…

tu fais comme j’ai dit plus haut
en début de macro, tu mets
if workbooks(1).name = “Macro de Copie.xls” then
set w=activeworkbooks(2)
else
set w=activeworkbooks(1)
endif

et ensuite, partout où tu as besoin du classeur, tu utilises simplement w à la place

Tout cela en supposant qu’il n’y ait que deux classeurs d’ouverts, bien sûr
Edité le 14/10/2008 à 13:05

Le s a Worbook est de trop je crois, par contre il ne veut pas de l’instruction “Else”.

M’enfin bon, j’ai déjà réussi à avancer à pas de géant sur ce coup là.
Vive le Workbook et vive la Commande Gcc ! :smiley:

non, ce n’est pas le else qui est de trop c’est le active
set w=workbooks(2) et idem pour (1)

Au début, j’étais parti sur activeworkbook (sans s, là), mais je me suis dit qu’on n’ouvrait peut être pas toujours les fichiers dans le même ordre ; donc mieux vaut faire un test sur le nom

J’adore Excel, même en étant une bille comme moi; On peut arriver à faire des trucs sympas (et même passer pour un Pro aux yeux des autes :D).
Heureusement qu’il y a des gens pour nous pousser sur la bonne voie.

Merci Gcc:super: