Conversion date - contourner paramêtre du panneau de config
Résolu
PlacageGranby
Messages postés
393
Date d'inscription
Statut
Membre
Dernière intervention
-
PlacageGranby Messages postés 393 Date d'inscription Statut Membre Dernière intervention -
PlacageGranby Messages postés 393 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Ma question :
il y a t-il un moyen de convertir un string d'un textbox dans une cellule Excel sans être à la merci du panneau de configuration.
Mon histoire :
Je faisait un Cdate sur une date provenant d'un textbox en format JJ-MM-AA et étrangement, il m'inversait l'année et le jour dans la cellule excel.
Après un peu de recherche, je comprend que lors de l'upgrade de mon poste de winXP a win7, mes paramètres de date avait passé de JJ-MM-AA à AAAA-MM-JJ et donc cdate ne fonctionnait plus avec ma saisie.
Donc, j'ai corrigé le panneau de config, mais je comprend que si quelqu'un d'autre utilise le fichier, il y a risque d'erreur s'il n'a pas les même config.
Donc, il faudrait que mon textbox sache la config de l'utilisateur pour demander selon le cas une saisie JJMMAA ou AAMMJJ selon le cas pour que Cdate fonctionne, ou carrément trouver une façon de convertir sans se soucier du panneau de config.
Ma question :
il y a t-il un moyen de convertir un string d'un textbox dans une cellule Excel sans être à la merci du panneau de configuration.
Mon histoire :
Je faisait un Cdate sur une date provenant d'un textbox en format JJ-MM-AA et étrangement, il m'inversait l'année et le jour dans la cellule excel.
Après un peu de recherche, je comprend que lors de l'upgrade de mon poste de winXP a win7, mes paramètres de date avait passé de JJ-MM-AA à AAAA-MM-JJ et donc cdate ne fonctionnait plus avec ma saisie.
Donc, j'ai corrigé le panneau de config, mais je comprend que si quelqu'un d'autre utilise le fichier, il y a risque d'erreur s'il n'a pas les même config.
Donc, il faudrait que mon textbox sache la config de l'utilisateur pour demander selon le cas une saisie JJMMAA ou AAMMJJ selon le cas pour que Cdate fonctionne, ou carrément trouver une façon de convertir sans se soucier du panneau de config.
A voir également:
- Conversion date - contourner paramêtre du panneau de config
- Panneau de signalisation routière - Guide
- Panneau de configuration - Guide
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Connaitre sa config pc - Guide
7 réponses
Un peu plus explicite avec un exemple:
Il faut mettre les dates comme ceci séparé par / :"m/d/yyyy" pour que cela fonctionne!!!
Private Sub CommandButton1_Click() TextBox1.Value = "2010-12-15" Range("A1").Value = TextBox1.Value Selection.NumberFormat = "General" Selection.NumberFormat = ""m/d/yyyy"" End Sub
Il faut mettre les dates comme ceci séparé par / :"m/d/yyyy" pour que cela fonctionne!!!
PlacageGranby
Messages postés
393
Date d'inscription
Statut
Membre
Dernière intervention
26
malheureusement, j'hérite d'une chaine texte dans ma cellule et non d'une date avec le code suivant.
Bonjour,
Pour l'avoir dans le bon format dans la cellule Excel:
Pour l'avoir dans le bon format dans la cellule Excel:
Selection.NumberFormat = "General" Selection.NumberFormat = "m/d/yyyy"
Bonjour,
Donc J'ai des textbox sur un userform
T_Cheque_datechq
T_Cheque_daterecu
J'inscrit dans mon textbox 10-12-15
et le resultat de Cdate va mettre dans ma colonne C
2010-12-15 si j'ai AAAA-MM-JJ comme date courte
dans mon panneau de configuration et
10-12-2015 si j'ai JJ-MM-AAAA comme date courte
Donc, sans même toucher au code, je peux avoir deux valeurs différentes selon la config de date dans windows. Le problème n'est pas seulement la forme, mais plutôt le contenu.
Les ordinateurs n'ont pas nécessairement toute la même config et j'aimerais ne pas avoir a uniformiser la configuration de tout les ordinateurs.
Le code
Donc J'ai des textbox sur un userform
T_Cheque_datechq
T_Cheque_daterecu
J'inscrit dans mon textbox 10-12-15
et le resultat de Cdate va mettre dans ma colonne C
2010-12-15 si j'ai AAAA-MM-JJ comme date courte
dans mon panneau de configuration et
10-12-2015 si j'ai JJ-MM-AAAA comme date courte
Donc, sans même toucher au code, je peux avoir deux valeurs différentes selon la config de date dans windows. Le problème n'est pas seulement la forme, mais plutôt le contenu.
Les ordinateurs n'ont pas nécessairement toute la même config et j'aimerais ne pas avoir a uniformiser la configuration de tout les ordinateurs.
Le code
Private Sub CommandButton1_Click() Dim DL_Cheque, DL_Depot As Long Dim Nb_facture As Integer Dim I As Long Nb_facture = LB_Cheque.ListCount DL_Cheque = Worksheets("Cheque_Recu").Range("A65536").End(xlUp).Row + 1 DL_Depot = Worksheets("Preparer_depot").Range("B65536").End(xlUp).Row + 1 For I = 1 To Nb_facture With Worksheets("Cheque_Recu") .Range("A" & DL_Cheque).Value = LB_Cheque.List(I - 1, 0) .Range("B" & DL_Cheque).Value = T_Cheque_no .Range("C" & DL_Cheque).Value = CDate(T_Cheque_DateChq) .Range("D" & DL_Cheque).Value = CDate(T_Cheque_DateRecu) .Range("E" & DL_Cheque).Value = LB_Cheque.List(I - 1, 1) .Range("F" & DL_Cheque).Value = LB_Cheque.List(I - 1, 2) End With DL_Cheque = DL_Cheque + 1 Next I If Cheque_total > 0 Then Worksheets("Preparer_Depot").Range("B" & DL_Depot).Value = T_Cheque_Client Worksheets("Preparer_Depot").Range("C" & DL_Depot).Value = CDate(T_Cheque_DateChq) Worksheets("Preparer_Depot").Range("D" & DL_Depot).Value = Cheque_total End If Worksheets("Cheque_Recu").Range("A" & DL_Cheque).Select UF_Cheque.Hide End Sub
Essaie ceci:
a la place de:
Selection.NumberFormat = "dd/mm/yyyy;@"
a la place de:
Selection.NumberFormat = ""m/d/yyyy""
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Je me suis mis dans la même configuration que toi, avec ce code j'obtiens une cellule au Format Date:
Je me suis mis dans la même configuration que toi, avec ce code j'obtiens une cellule au Format Date:
Private Sub CommandButton1_Click() TextBox1.Value = "2010-12-15" With Worksheets("Feuil1") .Range("A1").Value = TextBox1.Value .Range("A1").NumberFormat = "General" .Range("A1").NumberFormat = "dd/mm/yyyy;@" End With End Sub
Donc, voila mon test
https://www.cjoint.com/c/ELlsz43JNMP
Prendre en note que je suis en francais(Canada) et non pas francais(France).
Et comme mentionné, sur mon test, les textbox ont toujours été interprété comme une date, alors que dans mon fichier initial, le textbox est interprété comme du texte.....
Au final, je suis largué, il y a un autre facteur qui m'échappe.
https://www.cjoint.com/c/ELlsz43JNMP
Prendre en note que je suis en francais(Canada) et non pas francais(France).
Et comme mentionné, sur mon test, les textbox ont toujours été interprété comme une date, alors que dans mon fichier initial, le textbox est interprété comme du texte.....
Au final, je suis largué, il y a un autre facteur qui m'échappe.
Donc, il y a deux solutions pour l'instant.
Soit on utilise Cdate pour permettre n'importe quelle format pour la saisie, mais il faut programmer les paramètre de date de windows selon le format choisi.
Soit, on évite Cdate, mais il faut absolument utiliser AAAA-MM-JJ comme format de saisie et Excel ignore carrément la config de date de windows.
Pour ma part, les deux solutions sont mauvaises.
Cdate m'empèche d'utiliser le fichier sans courrir partout pour uniformiser les config windows.
Donc, la seule autre solution est de modifier la saisie pour prendre un format qui est différent du document originale.
Je crois que je vais mettre 3x textbox pour JJ MM AA, et que je vais recontruire un AAAA-MM-JJ moi même....
Soit on utilise Cdate pour permettre n'importe quelle format pour la saisie, mais il faut programmer les paramètre de date de windows selon le format choisi.
Soit, on évite Cdate, mais il faut absolument utiliser AAAA-MM-JJ comme format de saisie et Excel ignore carrément la config de date de windows.
Pour ma part, les deux solutions sont mauvaises.
Cdate m'empèche d'utiliser le fichier sans courrir partout pour uniformiser les config windows.
Donc, la seule autre solution est de modifier la saisie pour prendre un format qui est différent du document originale.
Je crois que je vais mettre 3x textbox pour JJ MM AA, et que je vais recontruire un AAAA-MM-JJ moi même....