Répéter un if statement plusieurs fois

Bonjour,

Débutant sur VBA, je souhaiterais savoir s'il n'y a pas une facon plus "optimisée" de faire le code suivant :

If ThisWorkbook.Worksheets("compta").Cells(1, 1) = 30 Then

m30 = m30 + Range("H1").Value
End If

If ThisWorkbook.Worksheets("compta").Cells(2, 1) = 30 Then

m30 = m30 + Range("H2").Value
End If

If ThisWorkbook.Worksheets("compta").Cells(3, 1) = 30 Then

m30 = m30 + Range("H3").Value
End If

If ThisWorkbook.Worksheets("compta").Cells(4, 1) = 30 Then

m30 = m30 + Range("H4").Value
End If

If ThisWorkbook.Worksheets("compta").Cells(5, 1) = 30 Then

m30 = m30 + Range("H5").Value
End If
If ThisWorkbook.Worksheets("compta").Cells(6, 1) = 30 Then

m30 = m30 + Range("H6").Value
End If

If ThisWorkbook.Worksheets("compta").Cells(7, 1) = 30 Then

m30 = m30 + Range("H7").Value
End If

If ThisWorkbook.Worksheets("compta").Cells(8, 1) = 30 Then

m30 = m30 + Range("H8").Value
End If

je dois répéter ce if statement pour chaque cellule de la colonne A.

J'ai regardé sur internet, et il semblerait que ce soit possible avec Do/while ou For.

Vous pensez que ca l'est ? Ou j'ai pas le choix et je dois copier le if statement une centaine de fois ?

Merci beaucoup,

Bien cordialement,

Christophe

Hello pour ton besoin on pourrait imaginer ça

 Derligne = Range("A" & rows.count).End(xlup).row 

For i = 1 to Derligne

If ThisWorkbook.Worksheets("compta").Cells(i, 1) = 30 Then

m30 = m30 + Range("H" & i).Value
End If

Next i

Derligne = identifie la dernière ligne de ta colonne A

Et après une boucle sur toutes les lignes

N'hésite pas si besoin

@+

Bonjour, c'est quoi m30 ? plusieurs cellule peuvent être égales à 30 ?

Bonjour,

Désolé de la réponse tardive, j'ai galéré :)

Ca fonctionne nickel, je devais juste déclarer mes variables (oui oui, je débute vraiment)

Merci beaucoup !

Hello,

Je me permet de revenir vers vous.

J'ai bien modifier le code VBA par celui que vous m'aviez suggérer, mais de temps à autre, il me retourne une valeur étrange et toujours la meme valeur, meme si le résultat est différent.

 Derligne = Range("A" & rows.count).End(xlup).row 

For i = 1 to Derligne

If ThisWorkbook.Worksheets("compta").Cells(i, 1) = 30 Then

m30 = m30 + Range("H" & i).Value
End If

Next i

Le code me retourne parfois le chiffre 44791.

Par exemple, le résultat devrait être '2', il va retourner correctment retourner '2' puis l'itération suivante il retournera '44791', sans raison particulière (il n'y a pas de pattern).

Ca vous dit quelque chose ?

J'ai déclarer mes variables ainsi :

    Dim m30 As Long
    Dim i As Double

Si jamais ca pourrait venir de là

Cordialement,

Christophe

Hello,

Sans le fichier ça risque d'être compliqué de savoir...

Bien à toi

Rechercher des sujets similaires à "repeter statement fois"