MsgBox avec condition dans une boucle

Bonjour au forum,

J'aimerais qu'un MsgBox s'affiche lorsque la condition a été OK au moins une fois, et un autre MsgBox lorsque la condition n'a pas été remplie.

Le problème est que je n'arrive pas à trouver une solution pour n'afficher le MsgBox qu'une seule fois et non pas à chaque itération où la condition n'est pas remplie…

Voici ce que j'ai tenté en dernier, avec le Exit For mais évidemment, on sort de la procédure dès la 1ère itération où la condition n'est pas remplie…

Pourriez-vous m'aider ?

With sh1                                                         
    For i = 10 To dl1                                                   
        If .Range("M" & i) = "Oui" And .Range("B" & i & ":K" & i).Font.Strikethrough = False Then
            .Range("D" & i & ":L" & i).Copy sh2.Range("E" & dl2) _
                    : sh2.Range("B" & dl2 & ":N" & dl2).Borders.Value = 1 _
                    : sh2.Range("B" & dl2 & ":N" & dl2).Borders(xlEdgeLeft).Weight = xlThick _
                    : sh2.Range("B" & dl2 & ":N" & dl2).Borders(xlEdgeRight).Weight = xlThick _
                    : sh2.Range("B" & dl2 & ":N" & dl2).Borders(xlEdgeTop).Weight = xlThin _
                    : sh2.Range("B" & dl2 & ":N" & dl2).Borders(xlEdgeBottom).Weight = xlThick _
                    : sh2.Range("B" & dl2 & ":M" & dl2).Locked = True                                
                    dl2 = dl2 + 1                                        
                    .Range("B" & i & ":K" & i).Font.Strikethrough = True: Range("B" & i & ":M" & i).Font.Bold = True: Range("B" & i & ":M" & i).Font.Italic = True  
                    .Range("L" & i) = "Déplacé en VIDNA : ligne n° " & dl2 - 10 
                        .Range("M" & i) = "OK"                                        
                       MsgBox "Transferts(s) OK", vbInformation + vbOKOnly, "Transfert effectué"
                Else
                    MsgBox "Aucun transfert", vbInformation + vbOKOnly, "Aucun transfert effectué"
                Exit For
            End If
        Next i
    End With

Merci d'avance !

Salut Nico,

comme ca peut être?

With sh1
x = 0
    For i = 10 To dl1
    If .Range("M" & i) = "Oui" And .Range("B" & i & ":K" & i).Font.Strikethrough = False Then
        .Range("D" & i & ":L" & i).Copy sh2.Range("E" & dl2) _
            : sh2.Range("B" & dl2 & ":N" & dl2).Borders.Value = 1 _
            : sh2.Range("B" & dl2 & ":N" & dl2).Borders(xlEdgeLeft).Weight = xlThick _
            : sh2.Range("B" & dl2 & ":N" & dl2).Borders(xlEdgeRight).Weight = xlThick _
            : sh2.Range("B" & dl2 & ":N" & dl2).Borders(xlEdgeTop).Weight = xlThin _
            : sh2.Range("B" & dl2 & ":N" & dl2).Borders(xlEdgeBottom).Weight = xlThick _
            : sh2.Range("B" & dl2 & ":M" & dl2).Locked = True
            dl2 = dl2 + 1
            .Range("B" & i & ":K" & i).Font.Strikethrough = True: Range("B" & i & ":M" & i).Font.Bold = True: Range("B" & i & ":M" & i).Font.Italic = True
            .Range("L" & i) = "Déplacé en VIDNA : ligne n° " & dl2 - 10
                .Range("M" & i) = "OK"
            x = x + 1
            End If
    Next i

    If x > 0 Then
        MsgBox "Transferts(s) OK", vbInformation + vbOKOnly, "Transfert effectué"
    Else
        MsgBox "Aucun transfert", vbInformation + vbOKOnly, "Aucun transfert effectué"
    End If
End With

@++

Salut m3ellem1,

C'est parfait, merci beaucoup !

Bonjour Nrev74, le forum,

Salut m3ellem1,

@Nrev74: ...je t'ai également répondu ici: https://forum.excel-pratique.com/viewtopic.php?p=841940#p841940

Le message est légèrement différent, mais le principe est le même,

Cordialement,

Bonjour Xorsankukai,

Je viens de voir, merci infiniment !

C'est parfait

Excellente journée à vous

Rechercher des sujets similaires à "msgbox condition boucle"