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