Obliger saisie de cellules vides

david84

XLDnaute Barbatruc
Bonjour,
dans une base de données, j'ai une feuille où je dois saisir les nouvelles fiches avec des renseignements de type nom, prénom, adresse,..., puis les enregistrer dans la BD à l'aide d'une macro commandée par un bouton.
Les cellules à renseigner sont placées en E6:E17.
Or, je veux que toutes ces cellules soient renseignées (même par un tiret si rien à dire).
Je voudrais inclure dans l'enregistrement de la macro "enregistrer" le fait que s'il y a des cellules vides, l'enregistrement ne peut se faire et qu'une boîte de dialogue le signale.

J'ai essayé d'inclure dans ma macro un bout de code de type :
If Sheets(1).Range("E8").Text = "" Then
MsgBox "Manque les données dans la cellule A8"
Cancel = True

else ma macro
End If
end sub

Sur une cellule (E8 dans l'ex), cela fonctionne mais je ne sais pas comment lui indiquer d'afficher la boîte de dialogue si une ou plusieurs cellules de la plage E9:E17 ne sont pas renseignées.
Quelqu'un peut-il me renseigner ?
 

bqtr

XLDnaute Accro
Re : Obliger saisie de cellules vides

Bonjour David,

Une façon de faire :

Rajoute deux variables comme ceci :
Code:
Dim k As Byte, Resultat As String
puis ce bout de code
Code:
'.../...
For k = 9 To 17
  If Cells(k, 5) = "" Then Resultat = Resultat & Cells(k, 5).Address & vbCrLf
Next

If Resultat <> "" Then
 MsgBox "Manque les données dans la / les cellule(s) suivante(s) :" & vbCrLf & Resultat, vbCritical, "Erreur :"
 Exit Sub
Else
' ta macro
End If
End Sub
Adapte la boucle k, tu parles de E6:E17 et de E9:E17 ?

Bonne journée
 

david84

XLDnaute Barbatruc
Re : Obliger saisie de cellules vides

Merci bcp bqtr, c'est exactement ce que je voulais.
2 questions cependant pour essayer de comprendre :
- qu'est-ce que définit k ? Est-ce les n° de lignes ?
- Pourquoi mets-tu :
If Resultat <> "" Then
MsgBox "Manque les données dans la / les cellule(s) suivante(s) :" & vbCrLf & Resultat, vbCritical, "Erreur :"

Moi j'aurais eu tendance à mettre If Resultat = "" Then... puisque c'est qd la ou les cellules sont vides que le message d'erreur doit s'afficher.
Il y a un truc qui m'échappe...
 

bqtr

XLDnaute Accro
Re : Obliger saisie de cellules vides

Re,

La variable k déclarée en Byte (parce que tu as très peu de ligne à tester) correspond bien au n° de ligne.
La boucle se fait de la ligne 9 à 17.

La boucle teste si il y a des cellules vides dans la plage E9:E17. Si c'est le cas, la variable Resultat enregistre l'adresse de la ou des cellules vides avec un retour à la ligne à chaque fois pour la présentation dans la MsgBox (l'instruction vbCrLf.)

Donc si la variable Resultat est vide c'est que toutes les cellules sont renseignées, et si c'est le cas tu peux lancer ta macro.
En résumé : si Resultat = "" lancement de ta macro.
Dans le cas contraire si tu as au moins une cellule vide, la variable Resultat contiendra quelque chose donc déclenchement de la MsgBox et sortie de la macro.
D'où si Resultat <> "" MsgBox + Exit Sub


A+
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 630
Membres
103 616
dernier inscrit
Simone98