Bonsoir Mathieu, Mon Amiral !!, le Forum
Je pense que Mathieu aura probablement besoin de tester sur plusieurs champs de sa facture si ils contiennent bien des données, alors pour lui éviter de répéter plusieurs fois If Range("XX") = "", je propose de boucler comme ceci :
Sub TestIfEmptyUnion()
Dim MandatoryField As Range, Cell As Range
Dim Bad As Byte
Set MandatoryField = Application.Union(Range("C5"), Range("A1:A3"), Range("B10"), Range("D1"))
For Each Cell In MandatoryField
If Cell = "" Then
Bad = Bad + 1
End If
Next
Select Case Bad
Case 0: ActiveSheet.PrintOut ' ou bien on lance la macro de Mathieu
Case 1: MsgBox Bad & " Champs Obligatoire n'est pas rempli", vbCritical
Case Else: MsgBox Bad & " Champs Obligatoires ne sont pas remplis", vbCritical
End Select
End Sub
En prime, une autre méthode avec une Array
Sub TestIfEmptyArray()
Dim Cell As Variant
Dim Bad As Byte
Dim Adresse As String
For Each Cell In Array("C5", "A1", "A2", "A3", "B10", "D1")
If Range(Cell) = "" Then
Bad = Bad + 1
Adresse = Adresse & Cell & vbCrLf
End If
Next
Select Case Bad
Case 0: ActiveSheet.PrintOut ' ou bien on lance la macro de Mathieu
Case 1: MsgBox Bad & " Champs Obligatoire n'est pas rempli :" & vbCrLf & Adresse, vbCritical
Case Else: MsgBox Bad & " Champs Obligatoires ne sont pas remplis :" & vbCrLf & Adresse, vbCritical
End Select
End Sub
A noter que si l'on veut adjoindre l'adresse des cellules vides dans la première méthode (Union), l'adresse s'initialisera différemment, de cette manière :
Adresse = Adresse & Cell.Address & vbCrLf
Avec tout çà Mathieu devrait avoir des facture du tonnerre ! (de Brest !! lol)
Bonne Soirée
@+Thierry