If Then sous excel jusqu'à 1ere cel vide

Fermé
Nassimo - 22 mai 2008 à 09:37
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 22 mai 2008 à 10:12
Bonjour,

Je débute en macros excel et je rame sur les conditions if then.

J'ai un tableau sur lequel j'ai mis une condition qui fonctionne pour la première cellule et je voudrais qu'elle fonctionne sur toutes les cellules jusqu'à la 1ere cellule vide de la colonne D. Je me doute qu'il faut employer la fonction Next ou Go To ou un truc comme ça mais j'y arrive pô.

Voici mon code :

Sub essaiconditions()
ActiveSheet.Range("d3").Select
If ((Range("d3").Value < 5000) And (Range("b3").Value = 2) Or (Range("d3").Value >= 5000 And Range("d3").Value < 17500) And (Range("b3").Value = 2.25) Or (Range("d3").Value >= 17500) And (Range("b3").Value = 2.5)) Then
Range("e3").Value = True
Else
Range("e3").Value = False
End If
End Sub

Merci de votre patience avec les débutants.
N
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
22 mai 2008 à 09:51
bonjour

Tu peux essayer ceci
Sub essaiconditions()
Dim l As Long
For l = 3 To Cells(1, 4).SpecialCells(xlLastCell).Row
    If ((Cells(l, 4).Value < 5000) _
        And (Cells(l, 2).Value = 2) _
        Or (Cells(l, 4).Value >= 5000 _
        And Cells(l, 4).Value < 17500) _
        And (Cells(l, 2).Value = 2.25) _
        Or (Cells(l, 4).Value >= 17500) _
        And (Cells(l, 2).Value = 2.5)) Then
        Cells(l, 5).Value = True
Else
        Cells(l, 5).Value = False
End If
Next l
End Sub
0
Ca marche.
Magnifique.
Merci.
Merci.
Merci.

Maintenant il faut que je comprenne.
Ca viendra.

Encore merci.
0
waoo40 Messages postés 106 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 1 juin 2018 4
22 mai 2008 à 10:06
Bonjour, Nassimo.
Voilà ta macro comme elle doit être pour lister, dans ce cas, les lignes 3 à 50.
Pour changer les lignes à balayer, remplaces les valeurs de Ligne.
Cela devrait te convenir.

Amicalement,
JM


Sub essaiconditions()
Ligne = 3
For Ligne = 3 To 50
ActiveSheet.Range("d3").Select
If ((Cells(Ligne, 4).Value < 5000) And (Cells(Ligne, 2).Value = 2) Or (Cells(Ligne, 4).Value >= 5000 And Cells(Ligne, 4).Value < 17500) And (Cells(Ligne, 2).Value = 2.25) Or (Cells(Ligne, 4).Value >= 17500) And (Cells(Ligne, 2).Value = 2.5)) Then
Cells(Ligne, 5).Value = True
Else
Cells(Ligne, 5).Value = False
End If
Next
End Sub
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
22 mai 2008 à 10:12
bonjour

Maintenant il faut que je comprenne.
Ca viendra.


Pas de souci tout le monde a commencé un jour ou l'autre.

La variable l représente la ligne et elle s'incrémente avec "next" pour parcourir l'ensemble de la feuille.

J'ai utilisé "Cells(l, 4)" avec comme paramètres ligne , colonne qui sont simples à comprendre.

Cells(1, 4).SpecialCells(xlLastCell).Row permet de trouver la dernière ligne utilisée de cette colonne
0