Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/10/2011, 12h11   #1
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Par défaut Format date instable

Bonjour,

J'ai commencé le développement d'une appli de gestion sans me soucier ailleurs que dans les paramètres régionnaux de w7 de formater les dates et tout fonctionnait bien.

Puis après l'installation de l'utilitaire Canal+ à la demande (seul évènement extérieur intervenu sur mon PC) mes dates se sont affichées "mm/dd/yyyy"

J'ai modifié mon code format "dd/mm/yyyy" sans succès.
J'ai trouvé ici je crois un post indiquant que VBA interprétait format date bizarement et que pour obtenir "dd/mm/yyyy" il fallait coder "mm/dd/yyyy", ce que je fis. Et effectivement, cela fonctionnait correctement, jusqu'à ce matin où de nouveau les dates s'affichent "mm/dd/yyyy".

Quelqu'un a-t-il une explication ?

Je précise que les dates affichées dans les formulaires sont enregistrées dans les tables exclusivement par code et formatées de la même façon.

Merci de vodre éclairage
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 12h23   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Quel est le format de date dans les paramètres régionaux de Windows ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 14h05   #3
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Bonjour Daniel C.,

date courte jj/MM/aaa
date longue 1111 1 MMMM aaaa

merci
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 14h26   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Peux-tu poster le code que tu utilises ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 18h51   #5
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Citation:
Envoyé par Daniel.C Voir le message
Peux-tu poster le code que tu utilises ?
enregistement
Code :
1
2
3
4
5
vCellule.Offset(0, 7) = Format(Lab_Date.Caption, "mm/dd/yyyy") 'Date de création du devis
vCellule.Offset(0, 8) = Format(Lab_DateModif.Caption, "mm/dd/yyyy") 'Date de la dernière modification
vCellule.Offset(0, 9) = Format(TxtDateOk, "mm/dd/yyyy") 'Date de l'acceptation par le client
vCellule.Offset(0, 10) = Format(TxtDateCloturé.Text, "mm/dd/yyyy") 'Date de clôture de l'affaire(A la fermeture de la fiche de prod)
vCellule.Offset(0, 11) = Format(TxtDateRefusé.Text, "mm/dd/yyyy") 'Date du refus du client
Chargement de l'USF
Code :
1
2
3
4
5
Lab_Date.Caption = Format(vCellule.Offset(0, 7), "mm/dd/yyyy")
Lab_DateModif.Caption = Format(vCellule.Offset(0, 8), "mm/dd/yyyy")
TxtDateOk.Text = Format(vCellule.Offset(0, 9), "mm/dd/yyyy")
TxtDateCloturé.Text = Format(vCellule.Offset(0, 10), "mm/dd/yyyy")
TxtDateRefusé.Text = Format(vCellule.Offset(0, 11), "mm/dd/yyyy")
Merci
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 19h20   #6
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Par défaut Précision complémentaire

J'ai désinstallé Canal+ à la demande, rebooté : le code format("mm/dd/yyyy") donne toujours mm/dd/yyyy, ce qui en soi est bien normal.

Je modifie le code en format("dd/mm/yyyy") et j'obtiens bien dd/mm/yyyy.
Ce qui est bien normal aussi.

Mais je suis obligé de couvrir le risque de voir ressurgir ce problème chez l'utilisateur après l'installation d'un logiciel. Et je ne trouve pas le code permettant d'initialiser les paramètres régionnaux pour faire tourner mon appli et les remettre à l'état initial à la sortie.

Merci
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 20h38   #7
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
C'est quoi le contrôle : "Lab_Date" ? comment est-t'il renseigné ?

pourquoi utilise tu Format ? format permet de transformer les dates en chaine de caractères... pourquoi ne pas mettre directement ta date au format date dans ta cellule..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 21h52   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
La commande "Format" te renvoie du texte, alors qu'il te faut du format "Date".
A l'initialisation, mets (je n'ai modifié que la première ligne) :

Code :
Lab_Date.Caption = vcellule.Offset(0, 7)
et à l'écriture dans la cellule :

Code :
1
2
vcellule.Offset(0, 7).NumberFormat = "dd/mm/yyyy"
vcellule.Offset(0, 7) = Lab_Date.Caption
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 09h30   #9
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Citation:
Envoyé par bbil Voir le message
C'est quoi le contrôle : "Lab_Date" ? comment est-t'il renseigné ?

pourquoi utilise tu Format ? format permet de transformer les dates en chaine de caractères... pourquoi ne pas mettre directement ta date au format date dans ta cellule..
Bonjour Bbil,

Lab_Date est une étiquette que je charge automatiquement et que l'utilisateur ne peut pas modifier.
Code :
1
2
3
Lab_Date.Caption = Format(Date, "dd/mm/yyyy")
'sachant qu'avant mon problème je codais tout simplement
Lab_Date.Caption = Date
Je n'utilisais pas Format avant mon problème et tout fonctionnait très bien !
Les colonnes recevant les dates sont formatées date.
Merci
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 09h37   #10
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Bonjour Daniel C.,

Ok avec vos deux réponses je comprends la cohérence de ce que vous me proposez et je ferais demain les modifs en ce sens et un test en réinstallant l'appli de Canal+. Je passerais en résolu si ok.

Merci et bon dimanche
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 10h58   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par danisoaz Voir le message
Bonjour Bbil,

Lab_Date est une étiquette que je charge automatiquement et que l'utilisateur ne peut pas modifier.
...
et alors pourquoi alors ne pas écrire
Code :
vCellule.Offset(0, 7) = Date 'Date de création du devis
ainsi tout est au format Date ...

Citation:
Envoyé par danisoaz Voir le message
....
Je n'utilisais pas Format avant mon problème et tout fonctionnait très bien !
Les colonnes recevant les dates sont formatées date.
...
Ce n'est pas l'utilisation format qui cause problème mais la façon dont on l'utilise... format renvoi une chaine de caractére et c'est la transformation de cette chaine en type date qui dépend des paramètres régionaux

tu devrais avoir le même problème avec la ligne :
Code :
vcellule.Offset(0, 7) = Lab_Date.Caption
qui laisse au système le choix de la méthode pour transformer la chaine contenu par Lab_Date en date.
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/10/2011, 16h03   #12
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Par défaut OK

Bonjour Bbil et Daniel C.,

J'ai supprimé tous les Format et tout est ok.
Mais comme à l'origine je n'utilisais pas non plus cette fonction et que tout allait bien, je ne suis pas plus tranquille que ça.

Merci beaucoup.
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 16h05   #13
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Tu as fait quoi exactement ? relis mon dernier message ..!
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 19h18   #14
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Citation:
Envoyé par bbil Voir le message
Tu as fait quoi exactement ? relis mon dernier message ..!
J'ai fait comme tu m'as dit ! Pour les dates automatiques
Code :
vCellule.Offset(0, 7) = Date
Et pour les autres j'oblige la saisie par choix dans un contrôle calendar et vdate étant la variable que je récupère, je code
Code :
vCellule.Offset(0, 8) = vDate
Enfin j'ai contrôlé le format de toutes mes colonnes dates dans les tables.

C'est bien ça ?

Merci
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 20h39   #15
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil


pour comprendre le problème que je soulever tu pourrai essayer de remplace Date par DateSerial et ainsi choisir ta date de test :

Code :
1
2
3
4
5
6
7
8
9
10
 
Dim iAn as integer
Dim iMois As integer
Dim iJour as integer
iAn = 2011
iMois = 10
iJour = 1
 
Lab_Date.Caption =  dateSerial(iAn,iMois,iJour)
vCellule.Offset(0, 7) = Lab_Date.Caption
et tu pourras mettre en évidence un problème avec les dates < au jour 12 si ton paramètres régionaux 'mm/dd/yyyy' ...

L'utilisation de format n'est pas interdite .. elle te permet de choisir le format de visualisation de ta date dans une chaîne de caractères (par exemple ton Lab_Date.Caption) ...

mais tu ne peu pas l'utiliser pour assigner un format d'affichage à une variable de type Date car le type Date n'intègre pas son format d'affichage
Citation:
Envoyé par aide en ligne
Lesvariables de type Date sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE représentant des dates comprises entre le 1er janvier 100 et le 31 décembre 9999, et des heures allant de 0:00:00 à 23:59:59
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 08h33   #16
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Bonjour Bbil,

J'ai bien compris l'utilisation de format.
Je suis un peu sur le gaz pour installer une nouvelle version, donc je garde ton test au chaud, je reviendrais dessus après.

Merci
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 18h22   #17
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Bonjour Bbil,

Après installation et désinstallation de l'application "Canal+ à la demande" et observation des tests, je confirme que ce programme mets bien la zone dans la gestion des dates sans que les paramètres régionnaux soient modifiés !
Pour le principe, je vais leur signaler mais je doute qu'ils s'en préoccupent.

Cordialement
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h12.


 
 
 
 
Partenaires

Hébergement Web