Bloquer un format Date VBA

webtomm -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

J'ai créé un userform dans lequel les personnes qui entreront leurs données devront rentrer une date. Je voudrais les obliger à écrire sous ce format: jj/mm/aaaa

Si ce n'est pas ce format je voudrais qu'un message apparaisse pour qu'ils respectent le format demandé.

Qqun pourrait il m'aider sur le code a écrire sous VBA?
Merci bcp pr votre aide !!!

7 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    à adapter à ton appli

    If TextBox1.Value Like "##[/]##[/]####" Then Exit Sub
     On Error GoTo Fin
            Application.EnableEvents = False
            MsgBox "Format non conforme."
            TextBox1 = ""
    
    Fin:
        Application.EnableEvents = True
    
    0
    1. webtomm
       
      Merci beaucoup !!
      0
    2. webtomm
       
      en fait ca ne fonctionne pas.
      pour l'instant je mets ca comme ceci:

      If datedebutdamortissementcc.Value <> "##[/]##[/]####" Then
      MsgBox "Vous devez entrer une date de début d'amortissement conforme au format indiqué"
      Me.datedebutdamortissementcc.SetFocus
      Exit Sub
      End If

      J'ai essayé av ton code mais je n'arrive pas à l'écrire correctement....
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      J'avais testé et ca fonctionnait.
      0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour webtomm,

    Si tu avais regardé le code de Michel que je salue, tu aurais écrit :

    If not datedebutdamortissementcc.Value like "##[/]##[/]####" Then 

    et cela aurait parfaitement fonctionné !

    PS : obliger les utilisateurs à saisir 01/02/2009 alors que 1/2/9 abouti au même résultat, cela me parait passible de harcèlement informatique... ou d'incompétence.

    Toujours zen
    0
  3. foo
     
    Salut!!

    Merci gbinforme,

    mais je comprends pas pk ca ne fonctionne tjr pas...

    j'ai écrit ce code:

    If Not datedebutdamortissementcc.Value Like "##[/]##[/]####" Then Exit Sub
    On Error GoTo Fin
    Application.EnableEvents = False
    MsgBox "Format non conforme."
    datedebutdamortissementcc = ""

    Fin:
    Application.EnableEvents = True

    et ca me met un blocage a ce niveau là:

    Worksheets("Echéancier Capital Constant").Range("D12").Value = CDate(Me.datedebutdamortissementcc)

    Je n'aurais pas un prob de format par hasard??

    Merci pr votre aide!!
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bonjour,

      essaies ce test
      If Not datedebutdamortissementcc.Value Like "##[/]##[/]####" Then
      MsgBox "Format non conforme."
          datedebutdamortissementcc = ""
      End If


      mais comme l'a dit fort justement gbinforme (bonjour, ca va ?), il est "sadique " de forcer l'utilisateur au format 12/09/2010 alors que 12/9/10 fonctionne très bien
      0
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Nous avons changé d'interlocuteur ?

    C'est un peu n'importe quoi comme ce que tu écrits car maintenant tu mets le message d'erreur lorsque la saisie est bonne !

    Forcément si la saisie est incorrecte, la valeur déclarée bonne est incorrecte...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. foo
     
    Bonjour,

    nan c'est tjr moi !

    Merci j'ai essayé ton test mais a chaque fois le blocage vient de là:

    Worksheets("Echéancier Capital Constant").Range("D12").Value = CDate(Me.datedebutdamortissementcc)

    qd je transforme la ca valeur en format date...
    je comrpends pas pk (il faut dire que je débute à peine...)

    Je sais c'est un peu sadique mais ca va etre utilisé par bcp de monde et je veux etre sur qu'il rentre la date d'une certaine facon, av les /.... sinon tout le reste plante...
    0
  7. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    je veux etre sur qu'il rentre la date d'une certaine facon, av les /.... sinon tout le reste plant

    Depuis quand les "/" sont obligatoires dans une date excel ?

    Que tu saisisses 2/6/10 ou 2-6-10 ou 02/06/2010 excel te fournira la bonne valeur.

    Quand on débute il ne faut pas partir en prenant des prémices fausses. Que tu veuilles sécuriser la saisie c'est bien et nécessaire mais pour cela il suffit de vérifier que ce qui est saisi est une date sans obliger les utilisateurs (qui ne sont pas tous incultes et inaptes s'ils ne sont pas informaticiens) à utiliser un format qui ne présente aucun intérêt particulier. En prenant des initiatives formalistes inutiles c'est la meilleure façon des braquer les utilisateurs et ils risquent aussi, pour te faire voir qu'ils ne méritent pas de tels blocages, de te trouver beaucoup plus facilement les bugs que tu auras oublié de corriger et là c'est toi qui sera bien planté !

    En facilitant le travail des utilisateurs, on améliore bien plus la vie de l'entreprise que lorsque l'on essaie de les brider par tous les moyens : il faut avoir un peu plus de psychologie ! Je peux t'écrire un livre si tu veux avec tous les apports que l'on peut obtenir des utilisateurs en les écoutant un tant soit peu.

    Maintenant c'est toi qui décide et c'est toi qui subira les conséquences donc tu fais bien comme tu veux, Michel t'a donné la formule qui fonctionne parfaitement et nous n'avons aucune idée de la façon où tu arrives ensuite au positionnement d'une cellule : c'est sans doute là ton problème.
    0
  8. foo
     
    Bonjour,

    effectivement je ne savais pas que tu pouvais entrer la date sous différents formats. je ne vais dc pas la bloquer.

    Merci pour ces infos en tout cas.

    Et efefctivement je ne prétends pas connaitre et bcp pourront me donner des conseils sachant que j'ai ouvert VBE pour la premiere fois il y a deux semaines....
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      très bon commentaire de gbinforme: je t'accorde, cher gb, 1 vote +

      :-)
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Merci Michel mais comme tu peux le voir cela crée un peu la panique dans l'affichage de cette discussion :
      - ton message réponds maintenant à foo ou webtomm
      - cet ajout qui voulait s'adresser à Michel est en fait pour foo

      Si quelqu'un arrive à suivre la conversation il a toutes mes félicitations !
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bin oui, mais c'est un peu le B...., ce nouveau forum avec 2 options de réponses... si je te répondais, ce n'était pas dans l'ordre chronologique et je répond dans l'ordre chronologique, je ne répond pas à la personne que je veux

      Et comme il ne sert à rien de faire une remarque ou suggestion sur ce site...
      0