Modifier une date dans un Userform

Résolu
Bonjour, a tous, forum


excel 2007 VBA

Pour modifier la date d'une expiration ( variable DateExpiration= `16/10/2013' ) se trouvant dans le Label 486 de l'UserForm

il me faut lancer mon programme et aller dans le code pour que je puisse mettre une nouvelle
date d'expiration dans la variable.

ce qui n'ai pas très pratique.

Alors comment faire pour changer la Date sans avoir à ouvrir le code pour effectuer la modification

Je reste ouvert à toutes propositions.

Cordialement Ray

lien pour voir photo

http://www.cjoint.com/?0Jpn5BT1tcK


Private Declare Function GetTickCount Lib "Kernel32" () As Long 'Pour la minuterie

''''''''''''''''''

'*** CODE POUR L'EXPIRATION "DATE" DE LA CARTE BLEUE
Dim Fin As Date: Dim DateExpiration

DateExpiration = "16/10/2013" 'Pour modifier la date d'expiration

Me.Label486.Caption = Application.Proper(Format(DateExpiration, "dd/mmm/yyyy"))

'(1) corresponds a alarme "1" jour avant la date d'expiration
If CDate(Label486.Caption) - Date <= 1 Then
Fin = Time + 0.208 / 3600 'Temps 5 secondes

Do While Time < Fin
Label486.ForeColor = vbYellow
Label321.ForeColor = vbYellow

Minuterie 500 'Toutes les demi seconde
Label486.ForeColor = vbRed 'Rouge Date
Label321.ForeColor = vbRed 'Rouge Expiration
Minuterie 500

Loop
Label486.ForeColor = vbYellow 'Remets en Jaune la date après clignotement
Label321.ForeColor = vbWhite 'Remets en Blanc la date après clignotement
End If
End Sub

'*** MACRO MINUTERIE POUR DATE D'EXPIRATION
Sub Minuterie(Milliseconde As Long)
Dim Arret As Long
Arret = GetTickCount() + Milliseconde

Do While GetTickCount() < Arret
DoEvents
Loop
End Sub

5 réponses

  1. Re

    J'ai mis un TextBox4 a la place du commandbutton2

    j'ai mis le code

    je clic dans le Textbox pour entrer une Date ok

    je fait enter hé la message d'enfer

    Excel a cessé de fonctionner etc etc
    Fermer le programme

    j'ai fait l'essai plusieurs fois idem

    j'ai redemarrer j'ai mis en remarque le code du textbox et plus de plantage

    Sinon je retiens l'idée du textbox j'en ai déja 3 dans mon USF et ca marche très bien

    et en plus c'est propre a l'écran

    Voila pour cet essai

    Merci Ray
    1. donc tout est résolu?
    2. Heu non pas du tout excel plante

      tu a lu ma dernière réponse a ce propos de plantage avec la TextBox
    3. Coucou,

      Je ne sais pas quel code tu as mis, mais ca ne devrait pas tourner en boucle.

      Je te joins un fichier :

      http://cjoint.com/confirm.php?cjoint=CJqqPm7T051

      Clique sur le bouton. Change la date, clique sur la seconde textbox.
      Mets une date valide et une date invalide.

      Ensuite, regarde le code.

      Si vraiment ca t'échappe, faudra que tu me donnes ton fichier.
  2. Bonjour,

    ca c'est à cause de la boucle :

    Do While DateExpiration = ""DateExpiration = "Merci d'indiquer la date d'expiration souhaitée :" If Not IsDate(DateExpiration) Then DateExpiration = "" MsgBox "La date que vous avez saisi n'est pas une date" End IfLoop
    Ca vérifie si c'es tune date, si tu veux enlever la vérification :

    Sub Commandbutton2_click()
    CommandButton2.Caption = "Merci d'indiquer la date d'expiration souhaitée :"

    end sub
    1. Re

      suivi conseil et ca marche pas

      Ca m'affiche dans le commandButton2 le texte "Merci d'indiquer la date d'expiration souhaitée :"

      et je ne peux rien entrer ni chiffre ni lettre d'ailleurs rien LOL

      si on essayai le Inputbox ou mettre un TextBox

      quand pense tu
    2. pardon, une erreur de ma part, rééessaie les deux codes :

      1°

      Sub Commandbutton2_click()
      Dim DateExpiration
      DateExpiration = ""
      Do While DateExpiration = ""
      DateExpiration = inputbox("Merci d'indiquer la date d'expiration souhaitée :")
      If Not IsDate(DateExpiration) Then
      DateExpiration = ""
      MsgBox "La date que vous avez saisi n'est pas une date"
      End If
      Loop
      CommandButton2.Caption = DateExpiration
      End Sub

      2°) ou

      Sub Commandbutton2_click()
      CommandButton2.Caption = inputbox("Merci d'indiquer la date d'expiration souhaitée :")
      End Sub
    3. Merci bien , OK ca marche avec les deux codes

      mais ca mets l'inputbox au milieu de l'écran et de l'userform

      Alors peut'on faire pareil mais avec un Textbox comme ca
      on resterai dans le control Textbox

      je vire le commandButton2 et je mets un Textbox comme ca reste propre

      voila derniere idée

      Merci Mélanie
    4. Oui tu peux mettre une textbox.

      Il suffit juste de mettre à l'initialisaiton de l'userform
      texbox = dateexpiration

      si tu veux vérifier que la saisie est une date :

      Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

      if not isdate(textbox1.value) then
      msgbox "Attention, la date saisie n'est pas correcte :"
      end if

      End Sub
  3. Salut

    Merci pour ta réponse

    j'ai déplacer le Label486 provisoirement plus gènant pour l'instant

    et mis et baptiser un commandbutton2 pour l'instant
    et qui est dessiné a la place du Label486

    j'ai mis un dim dateexpiration car j'avais ( une erreur variable non définie)

    des que je clic dans le commandbutton2 pour mettre une date

    le message "La date que vous avez saisi n'est pas une date" apparait

    et impossible de sortir d'excel pas planté mais bloquer

    obliger de faire CTRL ALT SUP pour en sortir

    le code modifier ci dessous


    Sub Commandbutton2_click()
    Dim DateExpiration

    DateExpiration = ""
    Do While DateExpiration = ""

    DateExpiration = "Merci d'indiquer la date d'expiration souhaitée :"
    If Not IsDate(DateExpiration) Then
    DateExpiration = ""
    MsgBox "La date que vous avez saisi n'est pas une date"
    End If
    Loop

    CommandButton2.Caption = DateExpiration
    End Sub


    PS: Près éventuellement a faire autrement

    Vu l'heure un bon app et merci pour ton aide

    Raymond
    1. Bon, je suis un peu perdue, alors on va tout reprendre.

      Ce que tu trouvais bien :

      Ou alors tu laisses le label et tu rajoutes un bouton à droite du label : changer la date d'expiration et tu fais alors apparaître une inpubox demandant la nouvelle date.

      Si j'ai bien compris, ton label 486 n'est plus un label mais un bouton, OUI ou non?

      Que veux-tu qu'il fasse ce bouton? Qu'il demande la date d'expiration et que le commandbutton contienne la nouvelle date d'expiration?

      Si tel est le cas, voici le code associé au bouton :

      sub commandbutton_click 'remplaces commandbutton1 par le nom de ton commandbutton

      dateexpiration = ""
      do while dateexpiration =""

      dateexpiration = "Merci d'indiquer la date d'expiration souhaitée :")
      if not isdate(dateexpiration) then
      dateexpiration = ""
      msgbox "La date que vous avez saisi n'est pas une date"
      end if
      loop

      commandbutton1.caption = dateexpiration 'remplace commandbutton1 par le nom de ton bouton

      end sub
      1. Bonjour,

        Une suggestion :
        Tu mets ta date d'expiration dans une cellule.
        Par exemple, tu crées une feuille paramètre.
        en A1 : date d'expiration
        en A2 : la valeur de ta date d'expiration

        et dans ton code, au lieu d'écrire :
        DateExpiration = "16/10/2013"

        tu écris
        DateExpiration = sheets("Paramètre").cells(1,2)
        1. Salut melanie1324

          merci pour ta réponse et pour ta sggestion

          j'aurai préferer intervenir directement pas l'intermédiaire de mon USF

          j'avais penser à un Input Box ou un Textbox ou autre, bon, suis pas très sur d'avoir bon LOL

          Cdlt Ray
        2. Oui,

          tu peux faire aussi comme ca :

          tu rajoutes une zone dans ton formulaire en indiquant date d'expiration.
          Ou alors, effectivement, tu écris une minimacro demandant une date d'expiration et ensuite, tu enchaînes sur le userform.

          Pour la macro :

          public date DateExpiration

          sub dateexpiration

          DateExpiration = inputbox("Merci d'indiquer une date d'expiration :")

          call userform("Me")

          end sub
        3. Serai t'il possible d'utiliser directement le Label486 qui affiche la date d'expiration actuel comme sur la photo que j'ai mis ligne

          Par Exemple: je clic dans le Label 486 et la date s'effacerai et je remplace par une autre, tout
          simplement

          car plus de place dans L'USF

          Je t'avoue que je sais pas encore comment opérer , mais je cherche

          Merci de t'interresser a mon sujet, c'est gentil

          Ray
        4. Coucou,

          je ne vois pas la photo.
          Tu peux aussi utiliser le label486. Mais je te conseille alors de remplacer ton label par une zone de texte.

          A l'initialisation de ton userform : zone de texte = dateexpiration

          Puis tu rajoutes : (attention, à chaque fois que tu cliqueras, la date s'effacera) :

          sub zonedetexte_Click
          zonedetexte.value = ""

          end sub

          Ou alors tu laisses le label et tu rajoutes un bouton à droite du label : changer la date d'expiration et tu fais alors apparaître une inpubox demandant la nouvelle date.
        5. Lien pour la photo ci dessous

          http://www.cjoint.com/?0Jpn5BT1tcK

          SVP qu'appelle tu (Zone de texte) , remplacer ton label par une zone de texte.

          ci dessous bonne idée c'est peut etre jouable, je devrai pouvoir arranger ca

          Ou alors tu laisses le label et tu rajoutes un bouton à droite du label : changer la date d'expiration et tu fais alors apparaître une inpubox demandant la nouvelle date

          tu veux bien svp me faire un model de code pour ton idée ci dessous, si tu a le temps bien sur merci bien

          Plus le temps d'essayer, je reviens plus tard après RDV spécialiste

          Merci beaucoup Mélanie