ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 janvier 2011
-
27 mai 2008 à 14:42
ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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) :
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!
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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==--
Vous n’avez pas trouvé la réponse que vous recherchez ?
ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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.
ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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.