boucle for next c avec conditions

  • Initiateur de la discussion Initiateur de la discussion breeze
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

breeze

XLDnaute Occasionnel
Bonjour à tous,
J'ai un problème de macro.
J'ai une macro qui me permet de prendre le nom de mes 300 élèves. Un après l'autre. La macro place le premier nom dans une facture. La fonction rechercheh fait en sorte que la facture se complète et que des montants apparaissent.
Je voudrais que si la facture de l'élève est à $0.00, que la macro saute par dessus ce nom et passe au suivant. s'il y a un montant (en E16)qu'elle imprime la facture c'est à dire qu'elle exécute la macro "impressiondossier"
J'utilise cette macro qui fonctionne très bien mais elle imprime les 300 noms qu'il y ait un montant ou non.
J'ai mis en rouge ce qu'il me manque à l'endroit où je pense que ça irait

Sub impniveau()
Dim retour As Integer

Sheets("feuil2").Select
If Range("p1").Value = 1 Then
Impressiondossier
Else
Dim val
val = Sheets("Feuil2").Range("R1").Value

retour = MsgBox("Voulez-vous vraiement imprimer tout le " & val & " ? ", vbYesNo + vbInformation + vbDefaultButton2, "Ecole Secondaire de Saint-Damien")
If retour = vbYes Then

For Each b In Range("Feuil1!b5:b400")
If b.Value = Range("n1").Value And b.Offset(0, 2).Value <> 0 Then

b.Offset(0, 2).Copy
Range("d3").Select
selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Impressiondossier
si la cellule E16 est = à 0 n'imprime pas ce nom (C'est à dire n'exécute pas la macro impressiondossier) et passe au nom suivantEnd If

Next b
End If

End If

End Sub


Merci
 
Re : boucle for next c avec conditions

Bonsoir Breeze,

Il manquait un "End If" dans ton code.

Peut-être comme ceci :
VB:
Sub impniveau()
    Dim b, retour As Integer
    Sheets("feuil2").Select
    If Range("p1").Value = 1 Then
          Impressiondossier
    Else
        Dim val
        val = Sheets("Feuil2").Range("R1").Value
        retour = MsgBox("Voulez-vous vraiement imprimer tout le " & val & " ? ", vbYesNo + vbInformation + vbDefaultButton2, "Ecole Secondaire de Saint-Damien")
        If retour = vbYes Then
            For Each b In Range("Feuil1!b5:b400")
                If b.Value = Range("n1").Value And b.Offset(0, 2).Value <> 0 Then
                    b.Offset(0, 2).Copy
                    Range("d3").Select
                    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    ' si la cellule E16 est = à 0 n'imprime pas ce nom (C'est à dire n'exécute pas la macro impressiondossier) et passe au nom suivantEnd If
                    If [E16] <> 0 Then Impressiondossier
                End If
            Next b
        End If
    End If
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour