Test de cellule en Vb

  • Initiateur de la discussion Mathieu
  • Date de début
M

Mathieu

Guest
Bonsoir le forum


Voilà g fabriquer un application (toute simple) permettant la gestion de facture.
Avec évidement la possibilité de l'imprimer. Mais je voudrait être certain que tous les champs necessaire ont été rempli par l'utilisateur avant de lancer l'impression.

Par exemple ma cellule C5 contient le numéro de la facture. Quel est alors la syntaxe me permettant de tester si cette cellule est effectivement bien rempli ??


Merci d'avance

Mathieu
 
L

Lord Nelson

Guest
Bonsoir,

Si tu as un bouton de commande "Imprimer" sur ta feuille, tu peux faire toutes les vérifications utiles avant de déclencher l'impression.
Par exemple :

Private Sub CommandButton1_Click ()
If Range("C5").Text = "" Then
MsgBox "N'oubliez pas le Numéro de facture !"
Exit Sub
End If
...
...
...
End Sub

L'instruction Exit Sub arrête l'exécution de la procédure et rend la main à l'utilisateur.

Cela répond-il à ta question ?

A+
LN
 
@

@+Thierry

Guest
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
 

Discussions similaires

Réponses
2
Affichages
1 K

Statistiques des forums

Discussions
314 190
Messages
2 106 987
Membres
109 733
dernier inscrit
chardou