XL 2019 Un seule boucle plage multiple if plage

  • Initiateur de la discussion Initiateur de la discussion Hoareau
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hoareau

XLDnaute Occasionnel
Bonjour
J'essaie de faire une boucle sur plusieurs plages
En fonction de la plage affecter une couleur différente, si la valeur est trouvée
J'ai un message erreur next sans for, alors qu'il y a bien deux next et deux for

merci

Status = Array("Plage_2", "Plage_3", "Plage_4")

For Each Cp_3 In Plage_1
For Each Cp_4 In Plage_jour

If Status(1) = Plage_2 Then
If Cp_3 = Cp_4 Then
Cp_3.Interior.ColorIndex = 48
Cp_4.Interior.ColorIndex = 48


ElseIf Status(2) = Plage_3 Then
If Cp_3 = Cp_4 Then
Cp_3.Interior.ColorIndex = 50
Cp_4.Interior.ColorIndex = 50


ElseIf Status(3) = Plage_3 Then
If Cp_3 = Cp_4 Then
Cp_3.Interior.ColorIndex = 51
Cp_4.Interior.ColorIndex = 51
End If


Next
Next
 
J'avais déjà essayé, réessayé même topo

1596522898100.png
 
salut à tous,
Fanfan est comme moi, il a bien compté 4 if ....
Si vous ne voulez pas vous perdre dans les elseif, indentez systématiquement votre code
ou utilisez les sélect case :

select case true​
case status(1) = plage(1)​
....​
....​
case status(2) = .....​
.....​
.....​
end select​
 
Dernière édition:
Ci-joint fichier explications sur la page du fichier

message Le fichier transféré est trop volumineux. pour avoir un nombre de ligne suffisant recopier données
Comprend pas pourquoi le fichier pèse autant avec 30 lignes et 30 colonnes
 
bonjour


l' option base (pour l'indexation des variable tableaux) n'est pas prise en compte 🙄 😉
pour te la faire courte
quand on créée un tableau avec array(xx,xx,xx) le premier c'est l'item zero
ici en l’occurrence plage_2 c'est status(0)

20
et puis quand boucle avec for each truc in machin il faut préciser la collection membre de machin
autrement dit ici je suppose que se sont les cellules de plage_1 et plage_jour
donc For Each Cp_3 In plage concernée.cells

et je rejoins @fanch55 " Les comparaisons ne me semblent pas appropriées "
en effet la double boucle imbriquée visite toute les cellules a plusieurs reprise
autrement dit les mêmes couleurs pourraient ne pas être sur la même ligne



dernier point
ton arrêt status contient des string alors fait moi plaisir utilise les comme tel
c'est a dire entre guillemet aussi dans les lignes "if et elseif

dans l’état sans plus de précisions de ta part ton code corrigé


VB:
Status = Array("Plage_2", "Plage_3", "Plage_4")

For Each Cp_3 In Plage_1.cells
    For Each Cp_4 In Plage_jour.cells

        If Status(0) = "Plage_2" Then
            If Cp_3 = Cp_4 Then
                Cp_3.Interior.ColorIndex = 48
                Cp_4.Interior.ColorIndex = 48
            End If

        ElseIf Status(1) = "Plage_3" Then
            If Cp_3 = Cp_4 Then
                Cp_3.Interior.ColorIndex = 50
                Cp_4.Interior.ColorIndex = 50
            End If


        ElseIf Status(2) = "Plage_3" Then
            If Cp_3 = Cp_4 Then
                Cp_3.Interior.ColorIndex = 51
                Cp_4.Interior.ColorIndex = 51
            End If

        End If

    Next
Next
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
212
Réponses
0
Affichages
566
Réponses
3
Affichages
452
Réponses
10
Affichages
444
Retour