La cellule ne peu être vide ! et erreur de syntaxe. [Résolu]

Signaler
Messages postés
7
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
27 novembre 2008
-
Messages postés
7
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
27 novembre 2008
-
Bonsoir,








Je rame déjà depuis quelques temps pour réaliser ce qui suit. Merci pour votre aide.






Dans la cellule A1 je souhaite que les utilisateurs du fichier que je suis en train de créer, mettent une date dans cette cellule sous la forme jj/mm/aaaa.




Je veux que Excel signal une erreur de syntaxe éventuelle lors d’une saisie, exemple de message : « Le format de la date n’est pas correcte. »




Je veux également qu’il prévienne si l’utilisateur laisse la cellule vide, exemple de message : « Une date doit être saisie ».




Je souhaite que ces différents messages apparaissent dés que l’utilisateur laisse la cellule A1 pour en sélectionner une nouvelle.








jphflo

4 réponses

Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

Tu ne trouves pas dans la bonne catégorie. Ici, tu es dans VB.NET et VB 2005.

Mais pour répondre à ta question, voici comment faire :

If Range("A1") = ""
Then
    MsgBox "Une date doit être saisie."
   
Exit Sub
End If

If Not IsDate(Range("A1"))
Then
    MsgBox "Le format de la date n'est pas correcte."
   
Exit Sub
End If

++

Fauve
<hr size="2" width="100%" />Pensez : Réponse Acceptée 
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

Voici le code qui va obliger l'utilisateur a rentrer une date. il doit être mis dans la feuille sélectionnée...

Private Sub Worksheet_SelectionChange(ByVal Target As Range
)

    If Range("A1") = "" And ActiveCell.Column <> 1 Then
        MsgBox "Une date doit être saisie."
        Range("A1").Select
        Exit Sub
    End If
   
    If Not IsDate(Range("A1")) And ActiveCell.Column <> 1 Then
        MsgBox "Le format de la date n'est pas correcte."
        Range("A1").Select
        Exit Sub
    End If

End Sub

<hr size="2" width="100%" />Note :

L'évènement Worksheet_SelectionChange s'exécute à chaque fois qu'une cellule est sélectionnée.

Il faut donc rajouter la condition suivante : ActiveCell.Column <> 1 pour éviter que le message
ne réapparait lors la sélection de la cellule A1 par le code Range("A1").Select


<hr size ="2" width="100%" />
++

Fauve
<hr size="2" width="100%" />Pensez : Réponse Acceptée 
Messages postés
7
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
27 novembre 2008

Bonsoir Fauve,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Malgré mon erreur merci pour ta réponse très rapide. Tes codes fonctionnent sans soucies, mais lorsque la cellule qui doit être détectée vide et sélectionne, que tu supprimes avec la touche suppr de ton clavier ce quelle contient et que tu clic sur le bouton ok du message d’alerte rien n’empêche un utilisateur de laisser la cellule vide et de sélectionner une nouvelle cellule.




Sans vouloir trop abuser de tes compétences, est-il possible d’empêcher un utilisateur de sélectionner une nouvelle cellule temps que <?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" /??><st1:personname w:st="on" productid="la cellule A">la cellule A</st1:personname>1 est vide ; en lui signalant systématiquement, par un message, « Une date doit être inscrite dans <st1:personname w:st="on" productid="la cellule A">la cellule A</st1:personname>1 avant de continuer la saisie ».








 








Merci encore pour le coup de mains.








 








Jphflo.
Messages postés
7
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
27 novembre 2008

Bonsoir Fauve,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Merci beaucoup, sans toi je n’aurais pas réussi à venir à bout de mon problème.


Tes codes fonctionnent comme je le voulais vraiment.



 




A bientôt sur le forum.



 




Jphflo