Date de date texte endate

Bonsoir à tous,

Voici ma question.

Depuis un portail intranet, j'exporte une base données dans la colonne A, j'ai l'ensemble de mes dates sous format texte

Avec une macro, je souhaite la transformer un format date.

J'ai testé avec l'enregistreur de macro l'option "rechercher" 01/04/2015 "remplacer par "01/04/2015 mais cela m'inverse le jour et le mois depuis la macro.

J'ai également testé l'option convertir, mais cela m'inverse également le jour et le mois depuis la macro.

Selon vous quel morceau de code je peux utiliser ?

D'avance, merci.

Krystoffe.

Bonsoir Krystoffe, bonsoir le forum,

Quand on veut renvoyer une date par VBA il faut la renvoyer au format américain (YYYY/MM/DD). Elle prendra alors le format attibué à sa cellule de réception... Essaie comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim DD As Variant 'déclare la variable DD (Données Date)

Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.cout, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O
For I = 1 To DL 'boucle de 1 à DL
    DD = Split(Trim(Cells(I, 1).Value), "/") 'récupère dans le tableau DD les données de la date (sans d'éventuels espaces avant et/ou après)
    Cells(I, 1).Value = DD(2) & "/" & DD(1) & "/" & DD(0) 'renvoie les données au format américain (YYYY/MM/DD) dans la cellule
Next I 'prochaine ligne de la boucle
End Sub

Merci pour ton aide.

Cependant, je ne suis pas encore expert en VBA.

Je te joins un extrait de mon fichier.

Si tu peux, stp, m'ecrire la macro afin que je comprenne mieux.

Merci.

13aaa.xlsx (246.27 Ko)

Bonsoir Krystoffe, bonsoir le forum,

J'ai un peu modifié le code dans le fichier en pièce jointe. Clique sur le bouton Dates.

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim DD As Variant 'déclare la variable DD (Données Date)

Set O = Sheets("Export Poste de Travail") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O
For I = 2 To DL 'boucle de 2 à DL
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante
    'récupère dans le tableau DD les données de la date (sans d'éventuels espaces avant et/ou après)
    DD = Split(Trim(Cells(I, 1).Value), "/") 'génère une erreur si la celllue ne contient pas une date
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'supprime l'erreur
        GoTo suite 'va à l'étiquette "suite"
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    Cells(I, 1).Value = DD(2) & "/" & DD(1) & "/" & DD(0) 'renvoie les données au format américain (YYYY/MM/DD) dans la cellule
suite: 'étiquette
Next I 'prochaine ligne de la boucle
End Sub
7aaa.xlsm (265.49 Ko)

Super, ça semble fonctionner comme je le souhaite.

Un grand merci.

Bonne journée.

Bonjour,

Ou bien sans macro :

  • copier une cellule vide
  • collage spécial addition sur la plage
  • remettre le format date

eric

Bonjour, bonjour !

Krystoffe13, Robert,

il y a bien plus simple par code pour corriger une importation faîte avec les pieds !

(Car dans le même cas de figure il n'y a aucun souci pour importer directement une date texte du Web dans Excel au format date …)

Sub Demo()
With Feuil1.Cells(1).CurrentRegion.Columns(1):  .FormulaLocal = .Value:  End With
End Sub

Bonjour et merci Marc,

Lorsque je colle ta macro sur un fichier avec un seul onglet, ça fonctionne.

Dès lors ou j'ai plusieurs onglets. Ca ne marche plus.

Quelle est la subtilité ?

D'avance, merci.

Bonjour le fil, bonjour le forum,

@Marc.

Tout ce que je sais je l'ai appris sur un autre forum où j'ai eu la chance incroyable de tomber sur des gens compétents et sympathiques qui prenaient le temps de me donner des conseils sur mes codes. Ce n'est pas la première fois que tu interviens avec des critiques très constructives et je profite de l'occasion pour t'en remercier...

Merci Robert !

Sinon il n'y a pas de subtilité car Feuil1 est le CodeName de la feuille nommée par défaut "Feuil1"

remplaçable par exemple par Worksheets("Feuil1")

Rechercher des sujets similaires à "date texte endate"