Modifier une date dans un Userform

Résolu
dudulleray -  
melanie1324 Messages postés 1561 Statut Membre -
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. melanie1324 Messages postés 1561 Statut Membre 156
     
    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. dudulleray
       
      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. melanie1324 Messages postés 1561 Statut Membre 156
       
      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. dudulleray
       
      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. melanie1324 Messages postés 1561 Statut Membre 156
       
      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. dudulleray
       
      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. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
  3. dudulleray
     
    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
  4. melanie1324 Messages postés 1561 Statut Membre 156
     
    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. dudulleray
       
      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. melanie1324 Messages postés 1561 Statut Membre 156
       
      pardon, une erreur de ma part, rééessaie les deux codes :



      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. dudulleray
       
      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. melanie1324 Messages postés 1561 Statut Membre 156
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dudulleray
     
    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. melanie1324 Messages postés 1561 Statut Membre 156
       
      donc tout est résolu?
      0
    2. dudulleray
       
      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. melanie1324 Messages postés 1561 Statut Membre 156
       
      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