[EXCEL] activation classeur

Fermé
ERIC59 - 5 nov. 2007 à 13:49
 ERIC59 - 9 nov. 2007 à 13:51
Bonjour,
j'ai besoin d'aide pour le cas suivant sur excel (version utilisée 2002).
j'ai un classeur (A) avec des boutons qui font appel à des macros,
mon premier bouton crée un nouveau classeur (B) , crée une nouvelle feuille et importe des fichiers txt
mon deuxième bouton crée une nouvelle feuille et importe des fichiers txt (puisque mon nouveau classeur est déjà crée)
mon troisième bouton crée une nouvelle feuille et importe encore d'autres fichiers txt
voilà pour le principe
ma difficulté est qu'après la création du classeur B, création feuille, importation, etc... je retourne dans le classeur A pour exécuter le deuxième bouton qui fait une importation mais elle ne se fait pas dans le classeur B mais dans le A où je me trouve.
comment avant de faire l'importation je peux dire d'activer le classeur B ?
merci de votre aide
A voir également:

5 réponses

bonjour,
merci pour cette réponse, je vais faire des tests mais sur le site msdn microsoft j'ai pas trouvé workbooks.new
mais workbook.new est-ce cela dont tu parles ?
merci
0
PBGunner Messages postés 64 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 29 juillet 2008 64
7 nov. 2007 à 13:59
L'idée de Santiago est bonne: Une fois que tu as créé le nouveau workbook, donne lui un nom. Ensuite, chaque fois que tu fais une action sur un classeur, utilise le nom du classeur pour selectionner le bon classeur de facon systématique... Ca t'évitera de faire des actions dans le mauvais classeur...

En revanche je ne pense pas que la syntaxe de la fonction que souhaite faire Santiago69 soit correcte... A mon avis il est plus pratique de créer plusieurs workbook indexé (Public MyWorkBooks(1 to 10) as Workbooks) et d'utiliser l'index MyWorkbook(i) pour affecter les noms de workbooks... ou un truc dans ce genre...
0
Salut a tous,
Comme je l'avais annonce, je n'avais pas MS Excel sous les yeux lors de ma proposition.
Voila la syntaxe exacte :

Dim NouveauClasseur As Workbook

Sub Bouton1()
Set NouveauClasseur = Workbooks.Add
'A ce moment, le classeur actif est "NouveauClasseur"
'Place ici les commandes d'importation de ton fichier texte
...
ThisWorbook.Activate
'ThisWorbook ne designe pas le classeur actif mais le classeur qui contient la macro en cours d'execution
'Cette commande te ramene donc au classeur de depart, pret a cliquer sur le deuxieme bouton
End Sub

Sub Bouton2()
NouveauClasseur.Activate
'A ce moment, le classeur actif est "NouveauClasseur" qui a deja ete cree
'Place ici les commandes d'importation de ton deuxieme fichier texte
...
ThisWorbook.Activate
'Cette commande te ramene au classeur de depart, pret a cliquer sur le troisieme bouton
End Sub

Et ainsi de suite...
0
bonjour,
merci pour vos réponses, je vais tester ça et donnerai les résultats.
encore merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
5 nov. 2007 à 14:00
je n'ai pas mon ordi sous windows sous la main.
je te donne les commandes de tete.

quand tu cree le classeur B fais :
dim ClasseurA as object, ClasseurB as object
set ClasseurA = thisworkbook
set ClasseurB = workbooks.new '(la je suis vraiment pas sur)
'comme ca tu as cree 2 objects facilement manipulables qui pointent vers tes 2 fichiers.

quand tu clic sur le 2e bouton, commence par
classeurB.activate
'vu que c'est 2 macro differentes, il faut s'assurer que les variables restent bien en memoire :
'1/ soit en les declarant au niveau module
'2/ soit en les declarant avec static

-1