Macro VBA qu ne marche pas en la lançant

richert90

XLDnaute Occasionnel
Bonjour à tous,
J'ai dans un fichier 2 colonnes:
dans une, j'ai des dates avec des heures et dans l'autre j'extrais en VBA juste la date (fonction left()).
Malheureusement ça inverse les mois et les jours assez fréquemment.
Pour essayer de remédier à cela, j'ai enregistré une macro permettant de convertir en format MJA les dates obtenues. lorsque j'enregistre la macro, j'ai bien une transformation des dates comme je veux mais lorsque je lance le code de la macro un autre coup, aucune modification...

Code:
Columns("C:C").Select
    Selection.TextToColumns Destination:=Range("C1"), FieldInfo :=Array(1, 3), TrailingMinusNumbers:=True

Quelqu'un aurait une solution?

Merci d'avance
 

Pièces jointes

  • convertir_dates1.xlsm
    17.5 KB · Affichages: 23
  • convertir_dates1.xlsm
    17.5 KB · Affichages: 25
  • convertir_dates1.xlsm
    17.5 KB · Affichages: 27

VDAVID

XLDnaute Impliqué
Re : Macro VBA qu ne marche pas en la lançant

Bonjour Richert90,

Peut-être comme ceci:

Code:
Sub test()

    For i = 2 To 29
    
         With Cells(i, 3)
            .Value = CDate(Cells(i, 2))
            .NumberFormat = "m/d/yyyy"
         End With
         
    Next i
    
End Sub

Bon après-midi !
 

richert90

XLDnaute Occasionnel
Re : Macro VBA qu ne marche pas en la lançant

Re,
Merci pour vos réponses
VDAVID, j'ai essayé ta solution mais c'était la même chose (j'ai essayé avec .NumberFormat = "mm/dd/yyyy" et ça allait mieux) mais je préfère éviter de passer par le numberFormat, j'aime pas vraiment car par exemple dans la cellule on a "02/12/2012" mais en se mettant dans celle-ci on voit dans la barre de formule écrit "12/02/2012" donc voila étant donné que j'utilise ces dates pour des filtres et tout c'est un enfer,..
Y a t'il pas moyen de passer par ce que j'ai fait par macro?
 

VDAVID

XLDnaute Impliqué
Re : Macro VBA qu ne marche pas en la lançant

Richert90,

Chez moi je n'ai pas ce problème, as-tu bien gardé l'instruction:

Code:
.Value = CDate(Cells(i, 2))
?

Sinon une autre solution mais plus fastidieuse:

Code:
Sub test1()

    For i = 2 To 29
    
         With Cells(i, 2)
         
            .Offset(0, 1).Value = CDate(Day(.Value) & "/" & Month(.Value) & "/" & Year(.Value))
            
         End With
         
    Next i
    
End Sub
 

richert90

XLDnaute Occasionnel
Re : Macro VBA qu ne marche pas en la lançant

Re,
En effet j'avais oublié le Cdate()... par contre je sais que j'ai eu déjà eu des problèmes avec celui ci quand j'ai essayé d'utiliser une macro de ce type sur Excel avec un Windows configuré en Anglais..
Du coup, ta deuxième solution me semble la mieux si je veux que ce soit compatible avec n’importe quelle langue de l'OS?
 

VDAVID

XLDnaute Impliqué
Re : Macro VBA qu ne marche pas en la lançant

Re,

Tu as eu des soucis avec l'instruction CDate ?
Où avec le .NumberFormats

L'instruction CDate() est à tester sur un windows configuré en Anglais car il me semble qu'elle se cale sur le profil d'Excel (Et renvoie dd/mm/aaaa ou mm/dd/aaaa en fonction de celui-ci).
 

richert90

XLDnaute Occasionnel
Re : Macro VBA qu ne marche pas en la lançant

euh pour être franc les deux :p
Je travaille sur un Windows Français donc quand je vois que j'ai pas de soucis de date , je crois que c'est bon, mais un collègue quand il teste sur son Excel anglais (et Windows anglais), on voit des choses du genre 4/14/2012 etc...
Je n'ai pas l’occasion de tester moi-même sur un Windows configuré en anglais malheureusement.
Après je sais qu'il existe une fonction pour savoir si excel est en anglais ou pas mais je sais pas si une telle fonction pourrait dire si Windows est en français ou en anglais?

Pour revenir au pb de départ, ta deuxième procédure avec le "Offset" marcherait quelle que soit la langue du OS tu penses?
 

VDAVID

XLDnaute Impliqué
Re : Macro VBA qu ne marche pas en la lançant

Re,

Je pense oui :)

La logique de la deuxième procédure c'est:

On a une cellule sous format date. Ce qu'on veut c'est récupérer le jour, le mois et l'année.
Les instructions Day(), Month() et Year() permettent de récupérer ces informations à partir d'une date (Ici la valeur dans tes cellules).
A mon sens, elle récupèrera toujours ce que la cellule considère comme un jour ou comme un mois, quelle que soit les versions d'excel ou la langue. (Même si une cellule est au format "dd/mm/yyyy" dans ton fichier en version française, et "mm/dd/yyyy" qaund on passe sur une version anglaise; la valeur récupérée par l'instruction Day() par exemple sera toujours "dd".

L'instruction CDate() remet au format selon la version utilisée ("dd/mm/yyyy" pour la version française et "mm/dd/yyyy" pour la version Anglaise.), mais sans inverser les jours et les mois.

N'hésite pas à me demander si tu as des questions, je ne sais pas si je suis très clair !
 

richert90

XLDnaute Occasionnel
Re : Macro VBA qu ne marche pas en la lançant

Merci pour ces infos
C'est déjà plus clair :)
Je vais donc essayer de travailler avec ta deuxième procédure. Sachant qu'après, je devrai placer les dates que j'ai isolées dans une zone de liste pour pouvoir filtrer sur une de celles-ci..
Je vais voir ce que ça donne..
 

Modeste geedee

XLDnaute Barbatruc
Re : Macro VBA qu ne marche pas en la lançant

Bonsour®

élargir et mettre la colonne contenant les dates au format standard (résultat : texte à gauche, num à droite)
les cellules contenant des valeurs sous la forme : 43210,897 (dates traduites au format local)
les cellules contenant des valeurs sous forme de date non pas été traduites ...!!!
pour verifier :
Code:
=SIERREUR(ENT(B2);SUPPRESPACE(GAUCHE(B2;TROUVE(" ";B2))))

dans ce cas appliquer la proposition :
https://www.excel-downloads.com/threads/conversion-format-francais-de-date.221239/

!!!
 
Dernière édition:

richert90

XLDnaute Occasionnel
Re : Macro VBA qu ne marche pas en la lançant

Bonjour Modeste Geedee
Merci pour ta proposition,
Mais je n'ai pas tout compris au fonctionnement de ton idée:
une fois les dates isolées de l'heure -> j’agrandis a colonne ->certaines dates restes en format date et sont situées sur la gauche de la cellule et d'autre sont en forme numérique et sont à droite de la cellule.
C'est à partir de là que je n'ai pas compris ce qu'il fallait faire
 

Modeste geedee

XLDnaute Barbatruc
Re : Macro VBA qu ne marche pas en la lançant

Bonsour®
Mais je n'ai pas tout compris au fonctionnement de ton idée:
une fois les dates isolées de l'heure -> j’agrandis a colonne ->certaines dates restes en format date et sont situées sur la gauche de la cellule et d'autre sont en forme numérique et sont à droite de la cellule.
c'est plus qu'une idée c'est une proposition éprouvée...:rolleyes:
C'est à partir de là que je n'ai pas compris ce qu'il fallait faire
Capture.jpg
 

Pièces jointes

  • convertir_dates1.xlsm
    19 KB · Affichages: 23
  • convertir_dates1.xlsm
    19 KB · Affichages: 25
  • convertir_dates1.xlsm
    19 KB · Affichages: 26
  • Capture.jpg
    Capture.jpg
    36.7 KB · Affichages: 27
  • Capture.jpg
    Capture.jpg
    36.7 KB · Affichages: 22

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 168
dernier inscrit
isidore33