Microsoft 365 Associer plusieurs plages à une boucle FOR

spike29

XLDnaute Occasionnel
Bonjour le forum,

Je n'arrive pas à simplifier ma syntaxe pour la boucle FOR ci-dessous.

J'ai trois groupes de plages que j'aimerai associer à "G", mais on me remonte une erreur de syntaxe au niveau de la virgule.
Après quelques recherches, je n'ai malheureusement pas trouvé par quel moyen arriver à ce résultat, à savoir asocier à "G", la plage 28 to 42 + 54 To 68 + 80 To 94.

Merci d'avance pour votre aide.

VB:
With Worksheets("TEST1")

For G = 28 To 42 , 54 To 68 , 80 To 94

If Cells(G, 12) <> "" And IsNotNumeric(Range("M" & x).Value) And Len(Range("M" & x).Value) <> 6 Then _
MsgBox "TEST", vbCritical, "Contrôle format "
Exit Sub

End With

Next G
 

JM27

XLDnaute Barbatruc
Bonjour
A mon avis , il te faut 3 boucles

Ou alors rechercher avec union de plage
Ci joint un exemple
Code:
'Associe 2 plages en un seul objet avec la méthode UNION
Sub UniondePlage()
Dim plg1, plg2, ToutePlage As Range
Set plg1 = Sheets("Feuil1").Range("A1:A10")
Set plg2 = Sheets("Feuil1").Range("B10:B20")
Set ToutePlage = Union(plg1, plg2)
ToutePlage.Interior.ColorIndex = 5
End Sub



VB:
Sub tutu()
Dim G As Byte
    With Worksheets("TEST1")
            For G = 28 To 42
                If Cells(G, 12) <> "" And IsNotNumeric(Range("M" & x).Value) And Len(Range("M" & x).Value) <> 6 Then _
                        MsgBox "TEST", vbCritical, "Contrôle format "
                        Exit Sub
                End If
            Next
            For G = 54 To 68
                If Cells(G, 12) <> "" And IsNotNumeric(Range("M" & x).Value) And Len(Range("M" & x).Value) <> 6 Then _
                        MsgBox "TEST", vbCritical, "Contrôle format "
                        Exit Sub
                End If
            Next
            For G = 80 To 94
                If Cells(G, 12) <> "" And IsNotNumeric(Range("M" & x).Value) And Len(Range("M" & x).Value) <> 6 Then _
                        MsgBox "TEST", vbCritical, "Contrôle format "
                        Exit Sub
                End If
            Next
    End With
End Sub
 

JM27

XLDnaute Barbatruc
un autre solution

Code:
Sub titi()
    Dim Cell As Range
    Dim X As Byte
        With Worksheets("TEST1")
            Set MaPlage = Application.Union(Range("L28:L42"), Range("L54:L68"), Range("L80:L94"))
            For Each Cell In MaPlage
                If Cell <> "" And IsNumeric(Range("M" & X) = False) And Len(Range("M" & X).Value) <> 6 Then
                    MsgBox "TEST", vbCritical, "Contrôle format "
                    Exit Sub
                End If
            Next
        End With
End Sub
 

spike29

XLDnaute Occasionnel
Bonjour JM27,

Merci pour tes réponses, j'ai testé la dernière.
Toutefois, j'ai un code erreur 1004 la méthode range de l'objet globale à échoué

C'est cette ligne là qui semble poser souci :

VB:
If Cell <> "" And IsNumeric(Range("M" & Q) = False) And Len(Range("M" & Q).Value) <> 6 Then

Après oui j'ai toujours l'option de faire mes 3 boucles séparément, mais j'essaye de simplifier le code à son maximum.

Bonne fin de journée
 

JM27

XLDnaute Barbatruc
bonsoir
et si tu postais un fichier anonymisé ?
Chez moi la dernière proposition fonctionne.
Y 'a t'il une valeur dans la variable X ?

Un petit fichier exemple en annexe
Dans l'exemple j'ai changé la variable X par un Cell.row ( comme je ne sais pas ce qu'il y a dans X) pour tester et j'ai supprimé le exit sub
 

Pièces jointes

  • Classeur1.xlsm
    16.2 KB · Affichages: 5
Dernière édition:

spike29

XLDnaute Occasionnel
Oui, tu as raison. Rien de mieux qu'un fichier comme base d'échange.

L'objectif du code est d'assurer un contrôle du respect du format dans la colonne M dès lors que se trouve une valeur dans la colonne L.

Critère du format :
être une séquence de 6 chiffres, ex : 111222

En dehors de cela => Exit sub


Le fichier en PJ.
 

Pièces jointes

  • TEST2.xlsm
    22.2 KB · Affichages: 4

Discussions similaires

Réponses
2
Affichages
147
Réponses
12
Affichages
536

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16