Action sur une cellule d'une autre fenêre

Résolu
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011 - 27 mai 2008 à 14:42
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011 - 30 mai 2008 à 14:37
Bonjour,

Je suis sous excel, et je souhaiterais faire des copier/coller d'une fenêtre à l'autre sans utiliser de Select ou de Activate(qui ralentissent l'execution et rendent impossible l'utilisation de certaines fonctions)

J'ai donc 2 fenetres désignées par les variables de type String 'winName' et 'this'
Je souhaiterais savoir comment désigner les céllules de ces deux différentes fenêtres sans utiliser de 'windows(winName).Activate'
J'ai l'habitude de programmer sous Java, et, en suivant la logique de ce langage, ca devrait donner genre windows(winName).Range("A1").Value = windows(this).Range("B3").Value

Pour l'instant, je fais comme ça (à peu près, je recopie de mémoire) :

windows(this).Activate
valeurTampon = Range("B3").Value
windows(winName).Activate
Range("A1").Value = valeurTampon

J'arrive a accélérer l'éxecution en utilisant une variable tampon et éviter les Select, mais je n'arrives absolument pas a éviter les windows().Activate!

Je ne sais pas si je suis très clair, mais merci de m'aider si vous pouvez!

--==IvanTil==--

8 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 mai 2008 à 14:14
Il faudrait savoir si tu travailles avec un seul ou plusieurs classeurs. Si c'est un seul classeur, tu peux laisser tomber la partie Workbooks(...) et n'utiliser que Sheets("LeNom") ou Sheets(LaVariable)

Et si tout se passe dans une seule et même feuille et qu'elle est active, seul Range() ou Cells() est nécessaire et tu peux laisser tomber Sheets() qui est superflu, à ce moment-là.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011
30 mai 2008 à 14:37
Ok j'ai trouvé... En fait, il faut réutiliser le nom complet de la fenêtre...
Par exemple, je trouves mes variables "this" (dont le nom est assez maladroit, je le concède...) et "winName" en utilisant ActiveWindow.Caption.
En réutilisant ces mêmes variables, ça donne :
Workbooks(winName).Sheets("Feuil1")Range("A1")Value = Workbooks(this).Sheets("Feuil2").Range("B3").Value

Merci encore pour votre aide! je vais pouvoir retaper mon programme proprement! :)

--==IvanTil==--
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 15:05
je te rassures, Select et Activate ne servent a rien, si ce n'est a faciliter la vie des codeurs.

windows(winName).Range("A1").Value = windows(this).Range("B3").Value

devrait fonctionner... reste a s'assurer de la worksheet active
0
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011
28 mai 2008 à 16:31
ca me dit que la méthode Range(String) n'éxiste pas dans l'objet windows... J'avais déjà essayé, mais dans le doute, j'ai refait un essai...
D'autres pistes?

--==IvanTil==--
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 mai 2008 à 01:41
Qu'est que le Range vient faire ici ? et String ?

Essaie comme ceci
Workbooks(VarBook1).Sheets(VarSheet1).Range(VarRange1).Value =
Workbooks(VarBook2).Sheets(VarSheet2).Range(VarRange2).Value

En passant, évite les noms comme This qui pourraient être réservés.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011
30 mai 2008 à 14:07
Be le "String" viens faire que "A1" est bien une chaîne de caractères non?

Pour le "this", je suis d'accord, mais dans l'urgence, je voulais un nom de variable qui me permette de retrouver un peu mes marques par rapport au java.

pour l'instruction que tu me donnes, je ne sais pas comment retrouver mes variables VarBook1 et VarBook2.

Merci encore de votre aide!

--==IvanTil==--
0
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011
30 mai 2008 à 14:26
--==IvanTil==--
0
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011
30 mai 2008 à 14:28
désolé, j'ai cliqué trop vite......

Comme je l'indique dans mon premier post, c'est pour faire des copies de valeurs entre deux fenêtres différentes (soit, entre deux classeurs avec les termes Excel)... j'ai donc bien besoin de la partie Workbooks(...), seulement je ne sais pas quel paramètre donner à l'instruction Workbooks. Pour ce qui est des copies d'une feuille à l'autre, j'y arrive très bien.

--==IvanTil==--
0
Rejoignez-nous