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. 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
    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
      0
    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
      0
    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
      0
    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.
      0
    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
      0
  2. 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
    0
    1. 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
      0
      1. 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
        0
        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
          0
        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
          0
        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
          0
        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
          0
      2. 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
        0
        1. donc tout est résolu?
          0
        2. Heu non pas du tout excel plante

          tu a lu ma dernière réponse a ce propos de plantage avec la TextBox
          0
        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.
          0