Date inversée à l'anglaise

Bonjour à toutes et tous,

J'ai regardé plein de forum sur les dates mais je n'arrive pas à résoudre mon problème.

La date de mon tableau B3 s'inverse (au lieu du 03/05 il se met 05/03 format anglais). Par contre, dans mes N3 et O3 les dates se mettent au bon format. Je n'explique pas pourquoi ça marche sur les colonnes M, N et O et pas dans ma colonne B. J'ai beau tout vérifier mon vba je ne trouve pas.

Attention, dans mon formulaire j'ai prévu qu'il mette directement la date du jour MaDate = Now(), il faudra enlever cette formule pour tester (c'est peut être ça qui bloque ?)

Vous, les "Pro" d'Excel pouvez-vous m'aider svp ? je pète les plombs j'y suis depuis des semaines ...

D'avance merci à la ou les personnes qui me répondront ;)

Bonjour,
Joins un fichier pour une aide adaptée du forum.
Cdlt

Oubli du fichier à ma question "Date inversée ..."

.Je suis désolée j'ai oublié d'insérer mon fichier.

Je vous le met

Re,
A tester !
Pour chaque TextBox avec une date (texte), il faut convertir ainsi :

ActiveCell.Offset(0, 15).Value = CDate(TxtDate_de_fin_2)

Cdlt.

Re bonjour Jean-Paul,

Merci, merci beaucoup pour votre aide ça fonctionne, je suis hyper contente.

Vraiment merci beaucoup et aussi de votre rapidité de réponse. Bravo :)

Bonne journée à vous

Oupssss désolée mais je me suis réjouie trop vite. J'avais tapé le 05/05/2022 donc même inversé ça ne pouvait pas me montrer le résultat. En tapant le 06/05/2022 effectivement je me suis aperçue que ça ne fonctionnait pas, j'en suis désolée.

J'ai fait un copier/coller de votre formule en y attribuant les bons noms de txtbox mais rien y fait.

Est-ce que ça vient de ma compréhension et je ne le copie pas ou il faut ? Je suis débutante et autodidacte et c'est pas facile pour moi (sans vouloir me chercher d'excuses).

Bien à vous

image

Re,
Une petite mise à jour !?
Cdlt.

ActiveCell.Offset(0, 15).Value = Clng(CDate(TxtDate_de_fin_2))

Re,

Je l'ai faite et je suis même sortie de mon tableau et réouvert ensuite, mais ça ne fonctionne pas.

Voici ce que j'ai recopié et changé en fonction de la txtbox concernée (TxtDate_Enregistrement).

J'ai aussi essayez de modifier le 0,15 par 0,2 car j'ai supposé que le 2 signifiait l'emplacement de ma colonne et ma date d'enregistrement se situe en colonne 2.

Crdt

image

Crdt

Bonjour, je ne pense pas que la réponse d'Eric concernait le "After update" de la textBox mais

les lignes de validations des dates de la sub BtnEnregistrer.

Vous pouvez aussi préciser le Format de date à utiliser dans la ligne de validation :

Exemple :

Private Sub BtnEnregistrer_Click()

    Sheets("TABLEAU").Activate
    Range("B3").Select
    Selection.End(xlDown).Select 'On se positionne sur la dernière ligne non vide
    Selection.Offset(1, 0).Select 'On se décale d'une ligne vers le bas

ActiveCell.Offset(0, 0).Value= Format(Cdate(TxtDate_Enregistrement.Value), "dd/mm/yyyy")

Re,
CDate fonctionne.
Voir exemple.
Cdlt.

50caillavet.xlsm (19.29 Ko)

Bonjour X-Men, merci pour votre retour.

J'ai donc rajouter la formule que vous m'avez envoyé sur le BtnEnregistrer mais rien y fait, ça ne fonctionne pas. (voir ci dessous)

image

Voici le résultat après la saisie du code que vous m'avez donné sur mon formulaire.

Les dates étaient 10/04/2022, 07/04/2022 etc et il m'a mis l'inverse.

image

Merci encore

Crdt

Il faudrait partir d'un fichier propre.

Dans votre fichier on s'y perd. quel userform utiliser ?

Pourquoi un after udate pour mette la date du jour ? dans ce cas la première textebox ne sert à rien car vous pouvez

valider la date du jour sans la mettre dans une textbox.

Sinon tout a fait d'accord avec Jean-Eric normalement Cdate( ... celà suffit pour la validation de données.

Bonsoir,

Je vous rejoins il y a de quoi s'y perdre dans mes fichiers, étant novice sur excel vba.

Effectivement on aurait pu directement mettre la date du jour dans le tableau sans créer une textbox dans mes formulaires 1 et 2 mais je ne sais pas faire, j'en suis désolée.

Du coup, les userforms concernées sont le Frm1 et le Frm2 puisque dans ces deux userforms on saisie la date du jour de l'enregistrement et se met dans le tableau lorsqu'on appuis sur "Enregistrer".

J'ai bien insérer le programme de Jean-Eric dans un des userform concerné (le Frm1) en prenant le soin de le mettre sur le bouton "Enregistrer" mais rien n'y fait la date continue à se mettre en format anglais, et pourtant le petit programme qu'il m'a fait fonctionne, ça me rend folle.

Je ne vois pas comment solutionner ce problème et j'en suis désolée.

En tout cas merci à tous les deux de prendre du temps sur mon travail.

Bonne soirée à vous

Re bonjour à tous,

Je reviens vers vous car mon problème

est toujours présent. Je n'ai pas réussi à résoudre ce problème de date qui s'inverse.

Je suis consciente comme vous disiez X-MEN que mon visual basic est pas très épuré mais étant débutante je l'ai fait en suivant pleins de tutos et il fonctionne (à part les dates) donc je n'ose pas modifier quoi que se soit pour l'instant. Je verrais tout ça quand je serai plus performante en basic.

Je vous joins à nouveau mon tableau et j'ai mis toutes les explications dedans, c'est à dire :

Colonne B3 sur le FrmSaisie à Date_enregistrement la date s'inverse quand il se met dans mon tableau 02/04/2022 au lieu de 04/02/2022. Par contre, dans mes colonnes M3,N3 et O3 tout fonctionne alors que j'ai le même programme.

Vraiment pouvez-vous m'aider ça me prend trop la tête.

J'ai encore regarder pleins de vidéos mais rien y fait. Je ne trouve pas cette solution.

J'ai essayez la formule de Jean-Eric mais j'ai un bug, surement que je dois modifier des choses mais je ne sais pas quoi.

Si vous pouviez regarder à nouveau cela me soulagerait vraiment.

Merci pour votre retour et le temps que vous prendrez pour mon problème.

Cordialement

Bonjour,

code à mettre pour une date au bon format:

Private Sub BtnEnregistrer_Click()
    Dim lstO As ListObject
    Dim lstR As ListRow
    Dim Ele As Control
    Set lstO = Range("tTableau").ListObject
    If Not lstO Is Nothing Then
        Set lstR = lstO.ListRows.Add
        With lstR
            .Range(1).Value = "A valider"
            .Range(2).Value = CDate(TxtDate_Enregistrement.Value)
            .Range(2).NumberFormat = "dd/mm/yyyy"

.......

et pour un tableau structuré, utiliser plutôt les identifiants de colonne afin de rendre le code plus lisible et de de faciliter toute maintenance ultérieure (ajout par exemple d'une nouvelle colonne):

Private Sub BtnEnregistrer_Click()
    Dim lstO As ListObject
    Dim lstR As ListRow
    Dim Ele As Control
    Dim i As Integer
    Set lstO = Range("tTableau").ListObject
    If Not lstO Is Nothing Then
        Set lstR = lstO.ListRows.Add: i = lstR.Index
        With lstO
            .ListColumns("Validation").DataBodyRange(i).Value = "A valider"
            .ListColumns("Date d'enregistrement").DataBodyRange(i).Value = CDate(TxtDate_Enregistrement.Value)
            .ListColumns("Date d'enregistrement").DataBodyRange(i).NumberFormat = "dd/mm/yyyy"

Bonjour thev,

Merci énormément, tout fonctionne. La date en format français se met impeccable.

J'ai utiliser les identifiants de colonne comme vous me l'avez conseillé dans tous mes formulaires, ça marche impeccable, je suis hyper heureuse.

Un petit hic que j'ai, c'est quand j'ouvre mon document excel. A l'ouverture j'ai ce message et je ne vois pas d'où ça peut provenir et ça ne me le faisait pas avant.

Peut-être que ça n'a rien à voir avec le visual basic mais plutôt dans une cellule de mon tableau mais je ne vois pas. Pouvez-vous me guider ou je dois chercher ?

image

En tout cas merci vraiment, vous êtes rapide et professionnel, je suis vraiment très contente.

Bien cordialement,

Santa

Pour le souci de référence circulaire, voir la première réponse de BrunoM45 dans ce sujet : https://forum.excel-pratique.com/excel/desactiver-les-iterations-references-circulaires-a-l-ouvertur...

Merci pour ton lien j'ai regardé et suivi les infos mais sa continue. Je vais réessayez.

Merci encore beaucoup.

Crdt

Merci pour ton lien j'ai regardé et suivi les infos mais ça continue. Je vais réessayer.

Dans ce cas, communique la dernière version de ton fichier sans infos confidentielles

Rechercher des sujets similaires à "date inversee anglaise"