Bug de date sur un remplacement

Brudy

XLDnaute Junior
Bonjour à tous,

Je suis face à un problème qui semble super simple, mais pourtant je suis incapable d'empêcher excel de faire foirer mes dates.

Je reçoit des informations de date sous le format : 12.12.2012 et j'exploite sous le format : 12/12/2012

J'ai donc réalisé ma macro à l'enregistreur pour me permettre de presser le bouton pour transformer les colonnes de dates en exploitable.

Et là ??????????? :eek::eek::eek::eek:o_Oo_Oo_O

upload_2017-3-3_10-13-32.png

Mes dates changent, prenant le jour pour le mois et inversement. mais quand je vais le faire à la main, rechercher, remplacer, . par /, ça fonctionne o_O

La macro semble provoquer un bug, quelqu'un aurait une solution ?

Code:
Sub Macrodate()
'
' Macrodate Macro
'

'
  
    Range("G6:G32870").Select
    Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour
je suis incapable d'empêcher excel de faire foirer mes dates.

Je reçoit des informations de date sous le format : 12.12.2012 et j'exploite sous le format : 12/12/2012

Mes dates changent, prenant le jour pour le mois et inversement. mais quand je vais le faire à la main, rechercher, remplacer, . par /, ça fonctionne o_O

La macro semble provoquer un bug, quelqu'un aurait une solution ?
pour l'explication :
Quand tu es en macro les dates sont reconnues "ByDesign" en mode US
Quand tu es en mode Manuel les dates sont reconnues "ByDesign" en mode Local

il faut intervenir avant que Excel "ByDesign" te prenne la main...
Donc lors de l'import des données (fichier texte)
à l 'étape 3 et pour les colonnes concernées préciser le "format lu"
utiliser "MJA"
 

TooFatBoy

XLDnaute Barbatruc
Marcel32, ta macro est hyper fonctionnel, le problème initial est résolu !
Cependant, comme mon fichier atteint 500 lignes en avril, et qu'il sera sans doute à 2000 en fin d'année, la macro vas prendre de plus en plus de temps, et elle rame déjà pas mal.
Cette remarque est étrange car cela semble dire que tu relances la macro chaque mois, et donc que chaque mois il y a inversion du mois et du quantième du mois pour les lignes déjà présentes...

Il faudrait donc absolument que la macro n'interviennent que sur les dates qui n'ont pas encore été corrigées.
Cela peut éventuellement effectué en n'agissant que sur les dates du mois en cours, ou peut-être uniquement sur les cellules sélectionnées.

Ceci dit, il est certain que l'idéal serait d'importer des dates au bon format.
 

Brudy

XLDnaute Junior
L'idéal étant basé sur un facteur humain, il est bien plus simple de corriger le problème via Excel malheureusement.

Les informations s'ajoutent au fil de l'année et la macro peut potentiellement être utilisée chaque semaine.

c'est pour cette raison que je sélectionnait l'ensemble de ma colonne G, ta macro est parfaite, mais le +1 semblent être assez gourmand en chargement :/

Par contre, ta solution d'intégrer un ajustement seulement pour le mois en cours pourrait être adéquate !
D'ailleurs ça me semble être la meilleur idée
 

TooFatBoy

XLDnaute Barbatruc
Quand je parle d'idéal, je veux bien sûr parler de la meilleure solution.
Et si les dates de ton fichier importé sont toujours au même format, comme ça semble être le cas, alors le facteur humain n'entre pas en ligne de compte ici (et c'est tant mieux, ça simplifie effectivement les choses). ;)

Et cette remarque faisait référence à celle de Modeste : importer dans Excel des dates au bon format, c'est-à-dire les transformer lors de l'importation.
Autrement dit, l'idéal ici n'est pas que ton fichier originel comporte directement des dates au bon format, mais qu'Excel sache quel format est utilisé dans ton fichier à importer et qu'il en tienne compte lors de l'importation pour qu'il importe les dates au format que tu veux. ;)


j'ai absolument décroché quand tu as commencé à expliquer comment intervenir avant ce fameux ByDesign imposé par excel ?
Je pense que Modeste veut dire qu'il faut utiliser le format "JMA" sur les dates au moment de l'importation du fichier.
 
Dernière édition:

Brudy

XLDnaute Junior
Ce que je voulais dire c'est que le problème vient d'un facteur humain, un réfractaire qui pense produire un bon travail. L'importation est realisée suite à un copier coller d'un autre fichier excel.

Les dates au format 01.01.2001 se fondent dans la masse avec une majorité de date en 01/01/2001.

Alors peut être existe il un collage spécial qui me permette d'appliquer directement le format souhaité ?
 

TooFatBoy

XLDnaute Barbatruc
Si c'est un "copier/coller" et non une importation, alors il est peut-être préférable de tenter une détection des dates non corrigées (elles contiennent des "." et non des "/", mais les vraies dates sont seulement des nombres... bref, il faut voir ce qui est faisable).

Il serait peut-être bien que tu fournisses un fichier ("dépersonnalisé" bien sûr), qui permettrait peut-être de trouver plus facilement une solution. ;)
 

TooFatBoy

XLDnaute Barbatruc
Pour rester sur la macro que j'avais proposée précédemment, essaye de la remplacer par celle-ci:

VB:
Sub MacroDate2()
'
Dim Lig As Long

  Lig = 0
  While Range("G6").Offset(Lig, 0) <> ""
    With Range("G6").Offset(Lig, 0)
      If IsDate(.Value) = False Then .Value = Mid(.Value, 4, 2) & "/" & Left(.Value, 2) & "/" & Right(.Value, 4)
    End With
    Lig = Lig + 1
  Wend

End Sub
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Ce que je voulais dire c'est que le problème vient d'un facteur humain, un réfractaire qui pense produire un bon travail. L'importation est realisée suite à un copier coller d'un autre fichier excel.

Les dates au format 01.01.2001 se fondent dans la masse avec une majorité de date en 01/01/2001.

Alors peut être existe il un collage spécial qui me permette d'appliquer directement le format souhaité ?
s'il s'agit d'un autre fichier Excel...
les dates sont en principe déjà en format interne Excel date(N° de serie)
si ce n'est pas le cas le défaut vient alors de ce fichier qui contient des dates au format texte !!!!

Garbage In, Garbage Out !!!!
pour être poli :rolleyes:

M**** In ; M**** Out
 

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll