VBA Range("A1") pas dans la bonne feuille

Résolu/Fermé
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - Modifié par jjsteing le 15/10/2010 à 12:19
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 15 oct. 2010 à 12:39
Bonjour,

Dans un fichier XL (sous office 2000) , Feuil1, A1, texte=A1 ; Feuil2, A1, texte=A2

Un ptit bouton dans Feuil1, code vba :

For Each NomsSheets In Worksheets
NomsSheets.Activate
NomsSheets.Select
MsgBox Range("A1").Value
'ou Cells(1,1).Value
next

me donne "A1" puis "A1" ... à croire que malgré le nomssheets.activate et nomssheets.select (qui fonctionne, vu qu il m affiche bien la feuille "Feuil2" dans mon XL), celle ci n est pas active pour vba....

alors que
MsgBox ActiveSheet.Range("A1").Value

me donne bien "A1" et "A2" ....

Grrrrr

Là c est un ptit exemple avec 1 seule ligne range... mais j'en ai des lignes et des lignes !!!.. Je voudrais pas ajouter 'ActiveSheet.' à chaque 'Range' ou 'Cells' de mon code ; ni un '.Range' ou '.Cells' qui marche avec le with....

En gros ma question : pourquoi un range("A1") se rapporte toujours à la feuille 1 malgré que ce soit une autre feuille active, et si possible, comment y remédier (que range("A1") se réfère à la feuille active)

Merci




N'hésitez pas à poser des questions, il vaut mieux être con 5 min que le rester toute sa vie ;)
N'oubliez pas de mettre votre Post en 'Résolu' quand c'est le cas :-D

1 réponse

cousinhub29 Messages postés 881 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 avril 2024 333
15 oct. 2010 à 12:22
Bonjour,

Je répondrai en 2 temps...

- Le code que tu fournis est sur le code de la feuille 1...et non dans un module standard...
Donc, lorsque tu demandes la valeur de la cellule A1, il est tout à fait normal que le code te retourne la valeur de la cellule A1, de la feuille 1...

- Il est rarement nécessaire d'utiliser les Select, et autres Activate...
On peut très bien s'en passer, cela diminue énormément le temps d'exécution de ton code.

Peut-être tout le code à revoir...

Bon courage
1
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
15 oct. 2010 à 12:39
Super !!!

J avais plus penser au module...

En mettant tout mon code dans un module, tout marche impeccablement !!

MERCI !!!
0