XL 2019 Un seule boucle plage multiple if plage

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
 

Hoareau

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

1596522898100.png
 

fanch55

XLDnaute Barbatruc
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:

Hoareau

XLDnaute Occasionnel
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
 

patricktoulon

XLDnaute Barbatruc
bonjour


l' option base (pour l'indexation des variable tableaux) n'est pas prise en compte :rolleyes: ;)
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
 

Hoareau

XLDnaute Occasionnel
Pas compris pourquoi, mais en copiant les données et la procédure dans un nouveau fichier, la taille est redevenu normale

Ci-joint fichier explications sur la page du fichier
 

Pièces jointes

  • Une seucle boucle plusieurs plage 4.xlsm
    52.1 KB · Affichages: 10

Hoareau

XLDnaute Occasionnel
J'avais pas vu, qu'il y avait une correction, les couleurs c'est pour vérifier les plages, l'important c'est qu'avec une seule boucle, je puis accéder aux différentes plages, pour y placer des formules pour compter
Donc ne pas faire, 5 boucles pour 5 plages
 

Pièces jointes

  • Une seucle boucle plusieurs plage 4.xlsm
    54.2 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035