Macro VBA - Problème format date

  • Initiateur de la discussion Initiateur de la discussion ldesurmo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ldesurmo

XLDnaute Nouveau
Bonjour à tous,

Je sais que le sujet qui me pose problème a été maintes fois discuté, mais je n'ai pas trouvé la solution qui me convient.

J'ai un fichier csv avec quelques colonnes qui comportent des dates, au format texte évidemment, dd.mm.yyyy

Une des premières chose que je demande à ma macro est de sélectionner les colonnes concernées et de remplacer les points (.) par des slash (/). Ceci ayant pour effet de transformer le format texte en format date.

Si j'effectue cette opération manuellement, (ctrl+H et remplacer) cela ne pose aucun problème, j'obtiens une liste de dates au format dd/mm/yyyy.

Si j'effectue cette tâche via le code suivant:

'Range("D😀,E:E,AF:AF,AH:AH,AJ:AJ,AN:AN,AP:AP,AR:AR").Select
'Selection.NumberFormat = "dd/mm/yyyy"
'Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
' SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
' ReplaceFormat:=False

J'obtiens:
- pour les dates avant le 13 des mois: une date équivalente à mm/dd/yyyy, mais au format dd/mm/yyyy. Exemple: au départ ma date est 03.05.2010 (3 mai 2010). Après l'éxécution de la macro, elle est 05/03/2010 au format "francais" => 5 mars 2010....
- pour les dates après les 13 des mois: un texte dd/mm/yyyy ! (et non pas un format date, mais à la limite ca ne me gêne pas du tout)

Savez vous si le problème vient du code ?
Si oui que changer ?
Si non, y a-t-il une possibilité de faire ce que je souhaite autrement que manuellement ?

Merci d'avance à tous !
Louis
 
Re : Macro VBA - Problème format date

bonjour Louis

teste ceci

Code:
Range("D:D,E:E,AF:AF,AH:AH,AJ:AJ,AN:AN,AP:AP,AR:AR").SpecialCells(xlCellTypeConstants, 3).Select
For Each cel In Selection
  If idate(cel.Value) Then cel.Value = CDate(cel.Value)
Next
 
Re : Macro VBA - Problème format date

Merci Pierre Jean pour ta réponse.
Ta proposition transforme effectivement les dates postérieures à un 12 du mois en date (alors qu'elles étaient en texte jusqu'alors), mais ca ne fonctionne toujours pas pour le reste: le 03.05.2010 (3 mai) est toujours transformé en 05/03/2010 (5 mars)...

Merci d'avance pour votre aide
Louis
 
Re : Macro VBA - Problème format date

Re

Veux-tu tester ceci qui fonctionne chez moi

Code:
Sub test()
Dim ladate As Date
Range("D:D,E:E,AF:AF,AH:AH,AJ:AJ,AN:AN,AP:AP,AR:AR").SpecialCells(xlCellTypeConstants, 3).Select
For Each cel In Selection
  cel.NumberFormat = "General"
   On Error Resume Next
    ladate = Replace(cel.Value, ".", "/")
   On Error GoTo 0
  cel.Value = ladate
Next
End Sub
 
Re : Macro VBA - Problème format date

Merci Pierre Jean

Cela fonctionne aussi ! Entre temps, j'avais utilisé, sur la colonne A, restreinte aux cellules utilisées ("ligne" est la première ligne vide):

Range("A4:A" & ligne - 1).Select
For Each cel In Selection
cel.Value = CDate(Left(cel.Value, 2) & "/" & Mid(cel.Value, 4, 2) & "/" & Right(cel.Value, 4))
Next

Cela marchait aussi !

Quoi qu'il en soit merci pour ton aide !
A bientot

Louis
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
245
  • Question Question
Microsoft 365 format date
Réponses
3
Affichages
105
Réponses
6
Affichages
299
Réponses
2
Affichages
511
Réponses
10
Affichages
547
Retour