Boucle si sur une colonne

Bonsoir tout le monde,

Je voudrai faire une boucle IF sur une colonne (M). Si la valeur d'une cellule de la colonne M = O alors j'applique le code à la fin du message. sinon je passe à la cellule suivante sans faire d'opérations.

Par exemple: sur le fichier

M4 <>O alors je ne fais rien.

M5 = O alors j'applique le code ci-dessous pour i=5

M6 <>O alors je ne fais rien.

M7=O alors j'applique le code pour i=7

J'ai créé une table tabloK = Range("M4:M" & Range("M" & Rows.Count).End(xlUp).Row)

et j'ai fait If tabloK(i, 1) <> "O" Then (la place du code) mais ça ne marche pas.

Est-ce que quelqu'un peut m'aider s'il vous plait?

    

    tablo = Range("AF4:AG" & Range("AF" & Rows.Count).End(xlUp).Row)
    tabloP = Sheets("Recap et Paramétrage").Range("BX4:BX" & Sheets("Recap et Paramétrage").Range("BX" & Rows.Count).End(xlUp).Row)

    k = 1
    For i = 1 To UBound(tablo, 1)

            If tablo(i, 1) <> "" And tablo(i, 1) <> "K" Then
                ReDim Preserve tabloPr(1 To 2, 1 To k + 1)
                tabloPr(1, k) = tablo(i, 1)
                k = k + 1
            End If
        End If
    Next i

    tabloR = Application.Transpose(tabloPr)
    Range("AF4").Resize(UBound(tablo, 1), 2).ClearContents
    Range("AF4").Resize(UBound(tabloR, 1), 1) = tabloR
    Range("AF4").Resize(UBound(tabloR, 1), 1).Sort key1:=Range("AF4"), order1:=xlAscending, Header:=xlNo
    Erase tabloR
    tabloR = Range("AF4:AG" & Range("AF" & Rows.Count).End(xlUp).Row)
    iP = 1
    For i = 1 To UBound(tabloR, 1)

            tabloR(i, 2) = tabloP(iP, 1)
            iP = iP + 1
            If iP > UBound(tabloP, 1) Then
                iP = 1
            End If
    Next i

   For iR = 1 To UBound(tabloR, 1)
        For i = 1 To UBound(tablo, 1)
            If tablo(i, 1) = tabloR(iR, 1) And tablo(i, 2) = "" Then
                tablo(i, 2) = tabloR(iR, 2)
                Exit For
            End If
        Next i
   Next iR

   Range("AF4").Resize(UBound(tablo, 1), 2) = tablo
    
14boucle-if.xlsx (24.86 Ko)

Bonjour KAK,

Vue que la plage n'a qu'une dimension, avez-vous essayé:

If tabloK(i) <> "O" Then

Bonjour sabV

Merci pour cette proposition.

Effectivement j'ai pas essayé cette option car je ne sais comment car je ne sais pas parcourir une colonne avec un tableau d'une dimension. Mon objectif est de parcourir la colonne M élément par élément avec la condition If.

Bonjour,

vous avez écrit:

J'ai créé une table tabloK = Range("M4:M" & Range("M" & Rows.Count).End(xlUp).Row)

j'en déduit que cette variable tableau n'a qu'une dimension, c'est la raison pour laquel je vous suggère de modifier votre condition pour:

If tabloK(i) <> "O" Then

pour parcourir les éléments de ce tableau

For i = LBound(tabloK) To UBound(tabloK)

Exactement c'est un tableau de dimension 1 (de M à M). Mais je veux dire qu'avec la manière dont je l'ai crée, j'obtiens une erreur si je fais tabloK(i).

Mais avec tabloK(i, 1) la fonction s'exécute mais ne me donne pas le résultat souhaité.

il y a beaucoup de code dans le fichier que vous avez fourni, et je ne connais pas le résultat que vous désirez obtenir.

il serait peut être mieux de commencer par là...

vous avez écrit:

Je voudrai faire une boucle IF sur une colonne (M). Si la valeur d'une cellule de la colonne M = O alors j'applique le code à la fin du message. sinon je passe à la cellule suivante sans faire d'opérations.

Par exemple: sur le fichier

M4 <>O alors je ne fais rien.

M5 = O alors j'applique le code ci-dessous pour i=5

M6 <>O alors je ne fais rien.

M7=O alors j'applique le code pour i=7

un exemple:

For i = LBound(tabloK) To UBound(tabloK)
 If tabloK(i) = "O" Then
  'mettre votre code ici  
End If  'sinon alors je ne fais rien
Next

Merci beaucoup pour votre aide.

En utilisant l'idée, j'ai réussi résoudre le problème après quelques bricolages.

Cordialement

Rechercher des sujets similaires à "boucle colonne"