× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 Problème de format datesSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
vedene
  Posté le 05/03/2013 @ 09:31 
Aller en bas de la page 
Petit astucien

Bonjour,

J'ai un soucis de format dates dans la liaison USF et cellule feuille.

Voici :

J'ai créé un USF pour saisir des données dont la date.

J'ai mis en place, pour choisir une date, un CommandButton (faisant apparaître un calendrier) qui à pour code ceci :


Private Sub CommandButton4_Click()
CalFrm.Show
TextBox1.Value = CalFrm.Calendar1.Value
Unload CalFrm

End Sub

Le format de la cellule destination est :

Lors du choix de la date dans calendar1, l'aspect est correct

Ceci terminé, dans la cellule de destination il est écrit :

03/05/2013

Je retrouve dans ma cellule une inversion jour;mois

Où est l'erreur ??

Merci de me dépanner

Cordialement



Modifié par vedene le 05/03/2013 11:11
Publicité
gilbert_rgi
 Posté le 05/03/2013 à 10:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour

formater votre valeur avec le code VBA

exemple

cliquez ici

ce fichier peut créer une erreur de référence car il vous manque peut-être MSCAL.OCX

Mais vous pouvez la télécharger ICI

ce calendar peut-être remplacer par DTPICKER



Modifié par gilbert_rgi le 05/03/2013 11:11
ferrand
 Posté le 05/03/2013 à 11:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Problème classique avec VBA (inversion résultant du format américain...)

Sans regarder dans le détail, je dirai que la récupération au moyen d'un TextBox conduit à récupérer une chaîne qui fait ensuite l'objet d'une réinterprétation en tant que date, d'où inversion...

Le problème devrait être évité en prélevant la valeur de CalFrm qui, elle, devrait être de type Date (le TextBox ne sert alors qu'à informer l'utilisateur de la valeur date qu'il choisit).

Bonne continuation.

vedene
 Posté le 05/03/2013 à 11:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re,

Merci à vous pour ces réponses.

Que veut dire cette phrase en clair ?

"Le problème devrait être évité en prélevant la valeur de CalFrm qui, elle, devrait être de type Date (le TextBox ne sert alors qu'à informer l'utilisateur de la valeur date qu'il choisit)."

Je cherche de mon coté sans solution pour l'instant

Ah encore un truc, mon calendrier ne se met pas à la date du jour, mais à celle de sa création. Pourquoi ?

Merci à vous

Cordialement



Modifié par vedene le 05/03/2013 11:12
ferrand
 Posté le 05/03/2013 à 11:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

vedene a écrit :

Que veut dire cette phrase en clair ?

"Le problème devrait être évité en prélevant la valeur de CalFrm qui, elle, devrait être de type Date (le TextBox ne sert alors qu'à informer l'utilisateur de la valeur date qu'il choisit)."


Re, tout simplement qu'il faut que tu affectes la valeur de CalFrm à ta cellule (avant de le décharger, évidemment) et non la valeur de TextBox1.

NB: Je ne me sers jamais d'un TextBox pour récupérer une date. J'utilise soit des boutons toupies (jour, mois, année) à partir desquels je la compose avec DateSerial, soit un calendrier comme tu le fait, soit une ScrollBar pour faire varier à partir d'une date fixe (date du jour ou une autre) en plus ou en moins. Le changement de valeur des contrôles utilisés pour définir la date permet d'afficher le résultat en le formatant comme on le souhaite dans un TextBox (ou une étiquette éventuellement). Mais je prélève la date choisie à partir du résultat initial. Dans les cas où il peut être un peu compliqué (ou moins commode) de la recalculer à partir des contrôles utilisés pour la définir, je l'affecte à une variable publique dans le module de feuille (type Date en principe) qui facilite sa récupération par n'importe qu'elle procédure (en principe celle qui appelle l'Userform) par : (NomduUserform).(Nomdelavariable). Le but de ces méthodes est d'affecter à la cellule finale une valeur de type Date (numérique) et non une chaîne convertible en date.

vedene
 Posté le 05/03/2013 à 16:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re bonjour,

Sans réponse, je vous joint un exemple de fichier qui pourra être plus explicite que ma prose.

ICI

Merci d'y jeter un oeil

Et merci d'avance pour votre aide

Cordialement



Modifié par vedene le 05/03/2013 17:20
MB24
 Posté le 05/03/2013 à 16:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour

J'ai ton fichier, mais on ne peut accéder au code de la macro. Tu peux le donner STP

A+

vedene
 Posté le 05/03/2013 à 16:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

MB24,

Il n'y a pas de macros, uniquement VBA par Alt +F11

Merci quand même

MB24
 Posté le 05/03/2013 à 16:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Private Sub CommandButton1_Click()

UserForm2.Show

Date = dd / mm / yyyy

TextBox.Value = Date

Unload UserForm2

End Sub

End Sub



Modifié par MB24 le 05/03/2013 16:58
Publicité
gilbert_rgi
 Posté le 05/03/2013 à 17:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

MB24 a écrit :

Private Sub CommandButton1_Click()

UserForm2.Show

Date = dd / mm / yyyy

TextBox.Value = Date

Unload UserForm2

End Sub

End Sub

ho là !!!!!!
plutot

Range("E3") = CDate(TextBox1.Value)

et

TextBox1.Value = CDate(UserForm2.Calendar1.Value)

vedene
 Posté le 05/03/2013 à 17:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Cela coinçe à : Date = dd / mm / yyyy

Peux-tu me mette ton vba dans mon fichier ?

Merci



Modifié par vedene le 05/03/2013 17:04
gilbert_rgi
 Posté le 05/03/2013 à 17:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

voilà le fichier

cliquez ici

vedene
 Posté le 05/03/2013 à 17:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour gilbert_rgi

Comme quoi un oeil averti .....

C'est super.

Par contre, pourquoi mon calendrier ne se met pas à la bonne date ?

Si on peut règler ce problème cela sera Nickel pour moi.

Merci beaucoup

gilbert_rgi
 Posté le 05/03/2013 à 17:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

vedene a écrit :

Bonjour gilbert_rgi

Comme quoi un oeil averti .....

C'est super.

Par contre, pourquoi mon calendrier ne se met pas à la bonne date ?

Si on peut règler ce problème cela sera Nickel pour moi.

Merci beaucoup

le systeme de ton ordi est bien en fr

vedene
 Posté le 05/03/2013 à 17:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re,

Oui

Pourquoi ?

gilbert_rgi
 Posté le 05/03/2013 à 17:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

parce que le calendar prend la date du systeme pour se régler

vedene
 Posté le 05/03/2013 à 17:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

Je vous quitte ce soir, j'ai les bêtes (chevaux) à nourrir

Alors à demain si la pluie persiste.

Cordialement

Publicité
vedene
 Posté le 05/03/2013 à 17:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Décidément nos messages se croisent

Voilà pour la langue

C'est bien de cela dont tu parles ?

Mon fuseau horaire est sur Paris.

Je ne vois rien d'autre

A demain

et merci

gilbert_rgi
 Posté le 05/03/2013 à 17:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

oui c'est ça mais ????

sinon tu peux mettre dans

Private Sub UserForm_Initialize()

Me.Calendar1.Value = Date

end sub

ou Me.Calendar1.Value = Now

ça devrait faire aussi {#}



Modifié par gilbert_rgi le 05/03/2013 17:54
ferrand
 Posté le 05/03/2013 à 18:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Je vois que mes explications ne semblent pas t'avoir convaincu et que tu les as zappées

cependant dans ton cas une variable module (dans Userform1) qui n'a pas besoin d'être publique puisque tu opères à partir du userform résoud parfaitement le problème, ainsi que je l'expliquais

J'en ai profité pour supprimer tous les "Select" issus généralement de l'enregistrement de macros, complètement inutiles dans un code VBA qui se respecte . Ceci dit, pour le moment rien à copier !

J'ai zappé le plus gros du débat qui a suivi ma dernière apparition. J'ai toutefois intégré l'initialisation du calendrier à la date du jour, suggérée dans sa dernière intervention par Gilbert RGI

Ton calendrier n'affiche pas les jours chez moi ! Pas le temps d'en chercher la raison. Quelle est l'origine de ce contrôle ? Cela ne l'empêche pas de fonctionner en tout cas.

http://cjoint.com/?CCfsoMB1FLz

Bonne continuation.

gilbert_rgi
 Posté le 05/03/2013 à 18:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour Ferrand

"Quelle est l'origine de ce contrôle" voir à propos dans les propriètés.

@ plus

ferrand
 Posté le 05/03/2013 à 18:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

gilbert_rgi a écrit :

Bonjour Ferrand

"Quelle est l'origine de ce contrôle" voir à propos dans les propriètés.

@ plus


Merci,

Ça me chiffonnait un peu, et je suis donc allé voir. Ça m'a chiffonné encore plus car le même contrôle est installé chez moi !

J'ai trouvé la raison assez vite : polices à taille 1,5. Mais mis un peu plus de temps pour trouver comment modifier ce réglage : "personnalisé" dans les propriétés, si besoin.

Tout est OK maintenant donc.

Bonne soirée.



Modifié par ferrand le 05/03/2013 18:44
vedene
 Posté le 06/03/2013 à 08:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Tout frais ce matin, je reviens vers vous pour vous remercier de l'intérêt que vous avez porté à ma demande.

C'est comme toujours très instructif.

Merci Ferrand, avec le retour de fichier je comprends maintenant ta première intention.

C'est exactement ce que je veux.

Grand merci aussi à Gilbert_rgi vous êtes super.

Quant au "solde" de macro, c'est parce que je fais mes VBA petit a petit et que si cele fonctionne, je ne cherche pas à simplifier.

J'apprends sur le "tas" et le tas est gros.

Affaire résolue

Merci à tous

gilbert_rgi
 Posté le 06/03/2013 à 10:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

vedene a écrit :

Bonjour,

Tout frais ce matin, je reviens vers vous pour vous remercier de l'intérêt que vous avez porté à ma demande.

C'est comme toujours très instructif.

Merci Ferrand, avec le retour de fichier je comprends maintenant ta première intention.

C'est exactement ce que je veux.

Grand merci aussi à Gilbert_rgi vous êtes super.

Quant au "solde" de macro, c'est parce que je fais mes VBA petit a petit et que si cele fonctionne, je ne cherche pas à simplifier.

J'apprends sur le "tas" et le tas est gros.

Affaire résolue

Merci à tous


A votre service pour une autre aventure

Publicité
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
99,99 €Ecrans 24 pouces Philips 242V8A (Full HD, IPS, 75 Hz) à 99,99 €
Valable jusqu'au 30 Septembre

RueDuCommerce fait une promtion sur l'écran 24 pouces Philips 242V8A qui passe à 99,99 € alors qu'on le trouve les écrans habituellement autour de 129 €. Cet écran possède une dalle IPS Full HD (1920x1080), offre un temps de réponse de 4 ms, une vitesse de rafraîchissement de 75 Hz (compatible FreeSync) et dispose d'une entrée HDMI et de haut-parleurs intégrés.


> Voir l'offre
25,99 €Carte mémoire SDXC UHS-I U3 SanDisk Extreme Plus 128 Go (jusqu'à 170 Mo/s) à 25,99 €
Valable jusqu'au 28 Septembre

Amazon fait une superbe promotion sur la carte mémoire SDXC UHS-I U3 SanDisk Extreme Plus d'une capacité de 128 Go qui passe à 25,99 € alors qu'on trouve la carte ailleurs à partir de 45 €. Cette carte mémoire offre des vitesses jusqu'à 170 Mo/s en lecture et 90 Mo/s en écriture et intègre des mécanismes afin de gérer l'usure des cellules de la carte et augmenter ainsi sa durée de vie. Une valeur sûre pour les plus exigeants. Elle résiste aux températures extrêmes, à l'eau, aux chocs et aux rayons X. La carte est fournie avec le logiciel de récupération de données RescuePRO Deluxe qui facilite la récupération des fichiers qui ont été effacés accidentellement. 


> Voir l'offre
122,57 €Kit de 32 Go (2 x 16 Go) de mémoire DDR4 Corsair Vengeance LPX 3200 MHz à 122,57 € livré
Valable jusqu'au 27 Septembre

Amazon Allemagne fait une promotion sur le kit de 32 Go (2x16 Go) de mémoire DDR4 Corsair Vengeance LPX 3200 MHz CL16 qui passe à 117,92 € (avec la TVA ajustée). Comptez 4,65 € pour la livraison en France soit un total de 122,57 € livré. alors qu'on le trouve ailleurs à plus de 170 €.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre

Sujets relatifs
Publipostage problème format
probleme format de cellule pour les nombres
Dates à l'envers et au format standard Excel2003
Problème format monétaire dans EXCEL
Problème de calcule entre 2 dates
Problème de Dates
Problème format
open office change le format des dates
problème de dates avec word
PROBLEME IMPRESSION avec un format de papier perso
Plus de sujets relatifs à Problème de format dates
 > Tous les forums > Forum Bureautique