VBA Range("A1") pas dans la bonne feuille
Résolu
jjsteing
Messages postés
1803
Statut
Contributeur
-
jjsteing Messages postés 1803 Statut Contributeur -
jjsteing Messages postés 1803 Statut Contributeur -
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
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
A voir également:
- VBA Range("A1") pas dans la bonne feuille
- Bruler feuille de laurier - Guide
- Out of range - Forum Ecran
- Feuille de pointage excel - Télécharger - Tableur
- Feuille de score belote excel - Forum Excel
- Dans la présentation à télécharger, sans modifier leur position dans la feuille : passez le rectangle noir en arrière-plan. passez le rectangle bleu au premier plan. passez le rectangle hachuré au premier plan. quel mot apparaît ? - Forum LibreOffice / OpenOffice
1 réponse
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
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
J avais plus penser au module...
En mettant tout mon code dans un module, tout marche impeccablement !!
MERCI !!!