Les dates saisies dans les macro passe en format Anglais.

S

Seb.

Guest
Bonjour,
J'ai un problème assez agaçant avec les Macros et la saisie de Dates dans des UserForm, je m'explique :
J'utilise des UserForm pour entrer des données dans un tableau sur une feuille de Calcul, parmis ces données se trouvent, entre autre, des dates saisies sous la forme jj/mm/aa (ex : 29/10/03).
Le problème, est quand je valide mon UserForm, les données sont insérées correctement dans le tableau mais les dates sont entrées en format anglais, c'est à dire mm/jj/aa.
Résultat, quand j'appelle une deuxième UserForm que j'utilise pour consulter les données du tableaux, tous les champs dates comportent des valeur érronnées le 04/01/2003 deviens 01/04/03.
A noter que si je saisie une date dont le jour est supérieur ou égal à 13 (par exemple : 23/01/2003) le problème ne surviens pas, ce qui est normal puisque la valeur d'un mois ne peut excéder 12.

Auriez vous une solution à me proposer pour résoudre ce problème.

PS : Il m'est aussi souvent nécessaire de convertir des valeur de type VRAI / FAUX en anglais pour que celles-ci puissent être également interprété correctement "If val="VRAI" then val="TRUE", "if val="FAUX" then "val"="FALSE".
Pénible je vous dit ! Visiblement le langage Macro, n'aime pas le Français. Heureusement qu'il ne convertis pas les mètres en pouces !
 
M

MG

Guest
Bonsoir Seb, et tout le monde

peut-être que le format jj/mm/aa ne convient- il pas, je joins un fichier UserForm regarde les codes et dis moi si cela résoud ton problème

@+MG
 

Pièces jointes

  • FormatDate.zip
    10.7 KB · Affichages: 50
  • FormatDate.zip
    10.7 KB · Affichages: 50
  • FormatDate.zip
    10.7 KB · Affichages: 50
S

Seb.

Guest
Bonsoir et merci pour cette réponse,
Mais celle-ci me conviens que partiellement.
Consultez le fichier joint pour avoir un complément d'information sur mon problème.
Il comporte un exemple concret sur cette problématique.

D'avance merci pour votre aide avisé !
Cordialement.
 

Pièces jointes

  • Demo_Bug_de_Date.zip
    13.4 KB · Affichages: 33
M

MG

Guest
Salut Seb

J'ai consulter ton fichier il y a une erreur car tu déclare l'ensemble de tes textBox par "Dim Champx as String" alors que le contôle 3 est une date

regarde le fichier modifier et dis moi si cela te conviens

@+
 

Pièces jointes

  • Demo_Bug_de_dateOK.zip
    18.8 KB · Affichages: 53
S

Seb.

Guest
Bonjour,
Ta proposition dérive exactement là ou je ne veux pas aller, c'est a dire saisir une ligne de code du genre :
ActiveCell.Offset(0, 2).Value = UserForm1.TxtNaissance
pour chaques champs saisis dans l'UserForm, car tu comprends bien que je préfère faire avec 3 lignes (boucle For X / Next X), ce que je devrais avec 32 lignes si je suivais ta méthode (cad 1 ligne par champs).
C'est sur qu'ainsi le PB serais résolue, mais ce n'est pas ce que je recherche.
De plus, sauf erreur de ma part Champx ne définie pas le type de données des textbox, mais le type de données de la variable qui permet de définier le nom de la textbox en cours dans la ligne :
Feuil1.Cells(2, X).Value = UserForm1.Controls(ChampX).Value
(avec ChampX qui peut avoir comme valeur TextBox1, TextBox2, TextBox3 ....)

Sinon merci pour ton code, j'ai appris d'autres choses intérêssantes pour remplir un tableau.

D'avance merci pour votre aide avisée.
 
M

MG

Guest
Re

"Dim Champx as String", sauf erreur de ma part Champx définie bien le type de données des textbox et renvoie une chaîne donc le TextBox3... devrait être un format date et non String d'ou l'erreur du format de date

Feuil1.Cells(2, X).Value = UserForm1.Controls(ChampX).Value
(avec ChampX qui peut avoir comme valeur TextBox1, TextBox2, TextBox3 ....)

ben sinon a suivre
 
S

Seb.

Guest
Dans l'exemple ci-dessous, en interceptant le(s) N° champ(s) correspondant à des TexBox contenant des dates ça fonctionne correctement.
Mais ce n'est pas vraiement la solution que je recherche, car ja rapelle que dans mon UserForm, j'ai 32 champs dont 5 d'entre eux sont des dates.
Avec cette "bidouille" il faut que j'applique la méthode If X= Then pour tous les champs dates de mon userform.

Cordialement.

>> Macro "bidouillée" :

Private Sub CB1_Click()
Dim NbrDeChamp As Integer
Dim ChampX As String
NbrDeChamp = 3

For X = 1 To NbrDeChamp
ChampX = "TextBox" & X

If X = 3 Then
Feuil1.Cells(2, X).Value=
Format(UserForm1.ControlsChampX).Value,"mm/dd/yy")
Else
Feuil1.Cells(2, X).Value = UserForm1.Controls(ChampX).Value
End If
Next X
Unload UserForm1
End Sub
 

Discussions similaires

Réponses
20
Affichages
2 K

Statistiques des forums

Discussions
313 029
Messages
2 094 552
Membres
106 050
dernier inscrit
RemyBo