Déterminer cellule vide sur 2 paramêtres

Résolu/Fermé
dom - 12 févr. 2015 à 16:58
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 23 févr. 2015 à 16:33
Bonjour,
D'abord merci à ceux et celles qui liront mon message... et merci aussi à toutes ces personnes de bonne volonté qui partagent leur savoir faire.
Ma problématique : saisie dans un tableau de 3 colonnes
- questions,
- date d'arrivée de la question
- date d'accusée de la question

J'aimerai que tant que la date d'arrivée et la date d'accusée de la question ne sont pas renseignées alors l'opérateur ne puisse enregistrer le document.
J'espère avoir été claire.

Je ne suis peu utilisateur de VBA mais j'essaie d'apprendre.
mon programme ressemble plus à du bricolage qu'à une feuille d'instruction logique..:)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i As Integer
i = 2 'i = position de la ligne aprés entête de colonne
Do While (Cells(i, 2).Value <> "") 'tant que colonne réception question est remplie
i = i + 1
Cells(i, 2).Select
Loop
If Cells(i, 1).Value <> "" Then 'colonne question est remplie
If Cells(i, 2).Value = "" Then ' colonne date réception question n'est pas remplie

MsgBox "la date réception n'a pas été saisie à la cellule " & "B" & i
Cancel = True
End If

If Cells(i, 3).Value = "" Then 'colonne date accusée de réception n'est pas remplie

MsgBox "la date d'AR n'a pas été saisie à la cellule " & "C" & i
Cancel = True
End If
End If
End If
End Sub
En espérant trouver quelqu'un pour me donner un coup de pouce.
Cordialement
dominique
A voir également:

3 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 12/02/2015 à 18:10
Bonjour

Essaie quelque chose comme ça

Const NF = "Feuil1"
Const lideb = 2

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim li As Long, OK As Boolean, lifin As Long
OK = True
With Sheets(NF)
  lifin = .Range("A" & Rows.Count).End(xlUp).Row
  For li = lideb To lifin
    If .Range("B" & li).Value = "" Or .Range("C" & li).Value = "" Then
      OK = False
      MsgBox "remplir les colonnes dates"
      Range("B" & li).Select
      Exit For
    End If
  Next li
  If Not OK Then Cancel = True
End With
End Sub


Cdlmnt
1
dom93600 Messages postés 1 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 23 février 2015
23 févr. 2015 à 15:59
Bonjour ccm81,

Je rentre de congés et à ma grande surprise, j'ai la solution à tous mes problèmes.. enfin uniquement la solution pour mon application.
Je te remercie d'avoir partager tes connaissances.

Bon courge et merci encore.

Dominique
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
23 févr. 2015 à 16:33
De rien

Si c'est fini, peux tu mettre le sujet à Résolu - en haut à droite de ton premier message

Cdlmnt
0