Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro et mauvais format de date (anglais/francais)

  • Initiateur de la discussion Perceval973
  • Date de début
P

Perceval973

Guest
Bonjour a tous.

J'ai recherché sur des tas de forums si mon probleme avait une solution, mais je n'ai rien trouvé qui soit concluant.

Voici mon probleme :

J'importe des données depuis un logiciel dans le quel les format de date sont les suivants jj.mm.aa (avec des points). Cela n'est pas modifiable...

A l'aide d'une macro je remplace les points (.) par des slashes (/) mais quand je fais cela le format de date se retrouve en anglais mm/dd/yy. Je ne comprends pas ou est l'erreur.

Pourtant si je fais le remplacement a la main tout se passe bien. (Selection de la colonne, rechercher, remplacer . par /, remplacer tout, OK...

Pour faire ma macro j'ai simplement enregistré ce que je faisais a la main.

Merci pour votre aide
Régis
 
P

Perceval973

Guest
J'ai oublié de vous montrer ma macro (toute bête)
J'ai essayer de remplacer dans la macro "dd/mm/yy" par "jj/mm/aa" mais ca marche pas...

{Application.ScreenUpdating = False

Range("B4:B1000").Select
Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "dd/mm/yy"

Range("A2").Select

Application.ScreenUpdating = True}

Encore merci...
Régis
 
Y

yeahou

Guest
Salut Perceval973, Robert, le forum

Cette solution macro recrée des dates au bon format.

Cordialement, A+

Application.ScreenUpdating = False
Dim Cellule_en_Cours

For Each Cellule_en_Cours In Range("B4:B1000")
If Not (Cellule_en_Cours.FormulaR1C1 = "") Then
With Cellule_en_Cours
.Value = DateValue(Mid(.Value, 1, 2) & "/" & Mid(.Value, 4, 2) & "/" & Mid(.Value, 7, 2))
.NumberFormat = "dd/mm/yy"
End With
End If
Next Cellule_en_Cours
Range("A2").Select

Application.ScreenUpdating = True
 
R

Robert

Guest
Salut Perceval 1973, salut Robert (j'en suis un autre), salut le forum,

Une petite bidouille qui devrait te convenir (en attendant qu'un vrai Crac ne mette son nez et te propose une vraie solution...)

Public Sub dat()
Dim cel As Range
For Each cel In Range("B1:B" & Range("B65536").End(xlUp).Row)
cel.Value = Mid(cel.Value, 1, 2) & "/" & Mid(cel.Value, 4, 2) & "/" & Mid(cel.Value, 7, 2)
cel.Value = DateValue(cel.Value)
Next cel
End Sub

À plus,

Robert
 
R

Robert

Guest
Re à tous + Yeahou

Excuse Yeahou j'avais pas actualisé avant d'envoyer ma réponse... Ça m'aurait évité de faire des commentaires qui se veulent drôles (je sais j'y arrive pas) mais ne visent que moi...

Mais l'essentiel est que nous puissions aider Perceval sur ce coup là.

À plus,

Robert
 
P

Perceval973

Guest
Super Yeahou, ca marche impeccable...

Merci pour ton aide...

Merci aussi aux autres pour leurs infos, mais la méthode de Yeahou est la première que j'ai testé et elle fonctionne a merveille...

Je regarderais les autres plus tard

Super génial ce forum
Régis
 
D

desesperee

Guest
J'ai l'impression que ton problème est le même que le mien avec le format numérique.
Je pense que lorsque nous travaillons manuellement Excel tient compte des paramètres Régionaux : type numérique, séparateur décimal, type de date.

Par contre, lorsque tu enregistres ta macro et la reexecute, j'ai l'impression que VBA ne tient PAS compte de ces paramètres et l'execute comme s'il était sur un excel de base US avec séparateur décimal avec . et type de date US également.

Ce n'est peut-être pas une aide mais je viens de trouver dans la base de connaissance windows; l'explication :

http://support.microsoft.com/default.aspx?scid=kb;fr;469646&Product=xlw2KFra

Ils semblent dire que c'est corrigé en XP !!!

Ils parlent également d'un paramètre registry : HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Options\VBAAlwaysLo
adUS = 0

qui déterminerait le fonctionnement si j'ai bien compris de la macro.



Pour ma part ici, je ne sais pas changer la registry; donc à voir si cela fonctionne.
 
M

mick

Guest
Bonjour à tous,

j'ai inclus ces lignes dans ma macro et cela marche très bien. Une fois. Si je relance, l'année de cette date est modifiée.
par exemple pour le 25/02/04 cela va m'afficher au bout de la deuxième fois 25/02/20

Malheureusement, comme je fais un suivi de commande client, je fais une mise à jour quotidienne. Et c'est un peu pénible de retaper la date

Vous avez une solution
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…