IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Userform / problème de format de date nom modifiable [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut Userform / problème de format de date nom modifiable
    Bonsoir,
    J'ai un soucis de retour de date dans mon userform GESTIONPOSTE, pour tout les textbox de date

    Pour le textbox DATEREPONSE, j'ai ça en code sinon le retour de date le met 42558

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub DATEREPONSE_Change()
    DATEREPONSE.Value = Format(DATEREPONSE.Value, "dd/mm/yyyy")
    End Sub
    Quand je cherche à remplacer la date j'obtient 31/12/18995



    BASE EMPLOI - DEMO.xls

    Qui aurais une idée pour avoir une date sous format normal 12/05/2014 et que je puisse la modifier facilement ?


    Merci

    Bonne soirée

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je ne pense pas que l'évènement Change soit une bonne choses pour cette manipulation.

    L'AfterUpdate serait plus adéquate.

    Philippe

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour
    Soit tu passe ta date au format date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub DATEREPONSE_Change()
    DATEREPONSE.Value = cdate(DATEREPONSE.Value)
    End Sub
    soit tu passe au format internationale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub DATEREPONSE_Change()
    DATEREPONSE.Value = format(DATEREPONSE.Value,"yyyy-mm-dd")
    End Sub
    je te suggère de fair le test à la sortie du contrôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub DATEREPONSE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsDate(DATEREPONSE) = False Then MsgBox "Ceci n'est pas une date": DATEREPONSE = "": Exit Sub
    DATEREPONSE.Value = CDate(Format(DATEREPONSE.Value, "yyyy-mm-dd"))
    End Sub
    Dernière modification par AlainTech ; 13/05/2014 à 21h16. Motif: Suppression de la citation inutile

  4. #4
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Bonjour,
    Tes codes sont super, je les gardes pour plus tard.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub DATEREPONSE_Change()
    DATEREPONSE.Value = Format(DATEREPONSE.Value, "dd/mm/yyyy")
    End Sub

    Marche super bien à à modification des données "_Change()", et du coup pourquoi je ne peux pas changer la date "à la main" comme je peux le faire dans l'USF "BASEEMPLOI" ?

    As-tu une idée ?

    Bonne Journée

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    A lire …


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Invité
    Invité(e)
    Par défaut
    la méthode "_Change()" est déclenché à chaque fois que que tu tape un lettre au clavier. il faut attendre que l'utilisateur est fini d'entrer une date pour la valider. c'est pour cela que je t'es proposé d'utiliser la méthode DATEREPONSE_Exit qui elle s'exécute quands tu quitte le contrôle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub DATEREPONSE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsDate(DATEREPONSE) = False Then MsgBox "Ceci n'est pas une date": DATEREPONSE = "": Exit Sub
    DATEREPONSE.Value = CDate(Format(DATEREPONSE.Value, "yyyy-mm-dd"))
    End Sub
    Dernière modification par AlainTech ; 13/05/2014 à 21h16. Motif: Suppression de la citation inutile

  7. #7
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    @ Mar-L
    si je comprends bien ton post :
    c'est ma recherche, qui poste le probléme de renvoie de dates......

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GESTIONPOSTE.DATEREPONSE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 37, False)
    Est ce que je peux imposer un format de "retour" dans ma recherche ?



    @rdurupt

    Je comprends mieux le "_Change()", je garde ton code pour valider d'éventuelles erreurs !!


    Thanks à vous deux.


    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Non, cela a voir simplement comment VBA interprète les "dates" comme indiqué dans le lien.

    Pour le retour, soit par la fonction Format soit via une fonction de date …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Oki !
    J'avoue que sur coup là, je suis complètement perdu !

    Procédons par ordre si tu veux bien !

    Dans le TextBox:
    - la Recherche/Renvoie d'information est ok
    - Le format d’affichage dd/mm/yyyy est ok

    Au clic dans le textbox:
    - Je peux sélectionner le contenu (date) du textbox
    - Quand je saisie une date, la données devient fausse :
    - date affichée : 13/05/2014
    - Souhait de replacer par 16/05/2014 --> cela devient 31/12/189956 ????

    Code du textbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub DATEANNONCE_Change()
    DATEANNONCE.Value = Format(DATEANNONCE.Value, "dd/mm/yyyy")
    End Sub

    Comme contourné le probléme ?

    Merci
    Bonne journée

    seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Si DATEANNONCE.Value était une date, il n'y aurait aucun problème; or c'est du texte !

    Et comme pourtant indiqué clairement dans le lien, le VBA est au format anglo-saxon ‼

    Donc tout simplement utiliser des fonctions de conversion de date ! Voir l'exemple de Demo4
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    okiiiiiiiiii j'ai pigé ..... sur ce soup là je n'avais la vision claire .....

    L'userform affiche un texte qui ressemble à une date mais n'en est pas une ...

    Par contre je ne trouve tjrs pas comment, aprés recherche sur internet écrire le code dans :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub DATEANNONCE_Change()
    DATEANNONCE.Value = DateValue("dd/mm/yyyy")
     
    '---> cela ne fonctionne pas  ?
    End Sub
    mystére pour moi

    Peux-tu m'éclaire stp ?

    Merci

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Depuis quand DateValue remplace Format ?‼

    Relire Demo4 et l'aide VBA de DateValue et son exemple !

    Ensuite, est-ce une version française ?
    Car de mon côté dans les versions françaises 2003 & 2007 je n'ai même pas besoin de convertir en date,
    cela se passe bien avec un texte représentant une date française avec la fonction Format

    A moins que cela ne provienne de la configuration régionale de Windows …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Bonsoir,


    là je rend les armes
    Je tourne sous office 2010 fr et les options régionales sont comme çà

    Nom : OPTION REGIONALES.PNG
Affichages : 2029
Taille : 47,6 Ko

    Tu y comprends qqc ?


    Bonne soirée

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  14. #14
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    ReBonjour,

    Pour info, j'ai mis toutes mes dates de la base en format "dd/mm/yyyy" par le biais de cette macro :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CONVERTIR_Click()
    Dim d&, tablo, i&
    d = [bb65536].End(xlUp).Row
    tablo = Application.Transpose(Range("bb2:bb" & d))
    On Error Resume Next 'si toutes les valeurs ne sont pas des dates
    For i = 1 To d
      tablo(i) = CDbl(CDate(tablo(i)))
    Next
    With [bb2].Resize(d)
      .NumberFormat = "dd/mm/yyyy" 'ou autre format Date
      .Value = Application.Transpose(tablo)
    End With
    End Sub

    Mais rien n'y change .......

    Je suis perdu


    Bonne journée

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  15. #15
    Invité
    Invité(e)
    Par défaut Bonjour,
    les dates dans tes cellules sont des date valide ton traitement ne va rien y changer! c'est quand tu écris dans ta cellule qu'il faut valider les date le 04/01/2014 devient le 01/04/2014 c'est un drôle de poisson mais c'est une date valide.
    Dernière modification par AlainTech ; 24/05/2014 à 20h16. Motif: Suppression de la citation inutile

  16. #16
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    yep !
    Je suis entrain de mettre une sécurité à ce niveau !

    Je vais utiliser ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub DATEREPONSE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsDate(DATEREPONSE) = False Then MsgBox "Ceci n'est pas une date": DATEREPONSE = "": Exit Sub
    DATEREPONSE.Value = CDate(Format(DATEREPONSE.Value, "yyyy-mm-dd"))
    End Sub
    Mais j'avoue que je ne pige tjrs pas pourquoi, je ne peux pas modifier les dates dans l'usf "GESTIONPOSTE"

    alors que les textes sont possibles......

    je n'arrive pas à utiliser datevalue .......


    D'habitude je pige....mais alors là .....

    Bonneaprem


    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  17. #17
    Invité
    Invité(e)
    Par défaut
    les combobox sont du texte si tu entre une date et que tu la place dans une cellule Excel,Excel va convertir dans un type qui lui semble logique. vba parle anglais et excel suivant le paramètres régionaux!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim Madate as string
    Madate = "04/01/2014"
    range("A1")=Madate 'donne 01/04/2014
    range("A1")= Cdate(Madate)'donne 04/01/2014
    range("A1")=format(Madate,"yyyy-mm-dd") 'donne 04/01/2014

  18. #18
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    OK
    Ce que je viens de faire
    Sur mon premier usf "BASEEMPLOI", je contrôle le format de sortie des textbox de date, pour l'incription dans la bdd excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub DATESAISIE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsDate(DATESAISIE) = False Then MsgBox "Ceci n'est pas une date": DATESAISIE = "": Exit Sub
    DATESAISIE.Value = CDate(Format(DATESAISIE.Value, "DD/MM/YYYY"))
    End Sub
    Même chose sur mon USF de lecture "GESTION"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub DATESAISIE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsDate(DATESAISIE) = False Then MsgBox "Ceci n'est pas une date": DATESAISIE = "": Exit Sub
    DATESAISIE.Value = CDate(Format(DATESAISIE.Value, "DD/MM/YYYY"))
    End Sub

    Donc à partir de maintenant plus de soucis de format.


    Etape n°2 --> le retour dans les textbox de l'USF de lecture "GESTION"

    est-ce que je peux utiliser qqc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("DATESAISIE") =cdate("DATESAISIE")

    Courage on va s'en sortir !!!

    Un grand merci à nouveau
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  19. #19
    Invité
    Invité(e)
    Par défaut
    "DATESAISIE" c'est le nom d'une cellule ou d'un combobox d'un UserForm?

  20. #20
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    C'est le nom d'une textbox de l'usf
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [débutant]Probléme de format de date
    Par Greg84 dans le forum Access
    Réponses: 2
    Dernier message: 10/08/2006, 14h31
  2. Problème de format de date par défaut
    Par anitshka dans le forum Langage
    Réponses: 4
    Dernier message: 31/07/2006, 12h22
  3. Problème de format de date
    Par pilou0013 dans le forum Access
    Réponses: 2
    Dernier message: 11/06/2006, 22h56
  4. [VB.net] problème de format de date
    Par cladsam dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/10/2005, 18h27
  5. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo