Bonjour,
Je m'inscrit sur ce forum, mais je m'en sers énormément depuis quelques semaines pour avancer sur mon projet VBA, donc avant tout grand merci.
Je travaille sur un outil VBA permettant de gérer des lits pour des patients hospitalisés; je ne vous poste évidement pas tout l'outil, mais un exemple qui illustre mon problème.
J'ai besoin de créer une boucle qui va chercher dans chaque onglet la valeur d'une cellule précise (dans l'exemple, A1) puis, si cette valeur est la bonne déclencher une action (dans l'exemple, une MsgBox "BRAVO").
J'ai utilisé le code suivant:
Sub TestBoucle()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Range("A1").Value = "Chien" Then MsgBox "BRAVO"
Next WsEnd
Sub
Et ça fonctionne en soit très bien. Mon problème est le suivant: le code ne fonctionne plus si je termine par un [END IF] avant le [Next Ws]. Ca me pose deux problèmes:
-pourquoi ne faudrait-il pas arrêter ce IF là alors que on arrête les IF quand ils sont dans une boucle de type [For i=x to y] ? Est-ce que les fonctions [FOR EACH] terminent automatiquement les [IF]?
-dans la mesure ou ce code sera en fait une toute petite partie d'une macro qui réalise énormément de choses, est-ce que le fait que le fait que ce [IF] n'ait pas de bornes ne risque pas de poser problème? Parce que du coup j'ai l'impression que tel que c'est codé, si la condition n'est pas remplie (dans l'exemple si Ws.range("A1").value n'est pas égal à "CHIEN", alors il n'y aura pas d'itération sur l'onglet suivant ou sur n'importe quoi que je coderais derrière?
J'espère avoir été clair; je vous met l'exemple en PJ et je vous remercie d'avance
.
Pierre