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