Action sur une cellule d'une autre fenêre

Résolu
Signaler
Messages postés
25
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
29 janvier 2011
-
Messages postés
25
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
29 janvier 2011
-
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

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
25
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
29 janvier 2011

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==--
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
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
Messages postés
25
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
29 janvier 2011

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==--
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
25
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
29 janvier 2011

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==--
Messages postés
25
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
29 janvier 2011

--==IvanTil==--
Messages postés
25
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
29 janvier 2011

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==--