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
 

Brudy

XLDnaute Junior
Bonjour Youky, Bonjour Cathodique,

Désolé pour ce temps de réponse et de remerciement interminable, j'ai eu quelques soucis à régler :)
Bon anniversaire d'inscription Cathodique, 5 ans le jour ou tu m'a répondu !

J'aime beaucoup ta réponse Cathodique mais je ne comprend pas vraiment la formule.
- Comment détermine tu la plage ?
J'ai tenté de l'appliquer mais aucun résultat :/
 

cathodique

XLDnaute Barbatruc
Bonjour,
Merci pour l'aniv', comme on dit de nos jours.
J'aime beaucoup ta réponse Cathodique mais je ne comprend pas vraiment la formule.
ce n'est pas une formule, mais une macro.
- Comment détermine tu la plage ?
Je ne détermine aucune plage, la macro s'éxecute tant qu'elle ne rencontre pas une cellule vide, si elle rencontre une cellule vide elle s'arrête.
J'ai tenté de l'appliquer mais aucun résultat :/
Tu sélectionnes le code, tu fais un 'copier'
Ensuite, tu appuies sur Alt+la touche F11 - L’Éditeur VBE s'ouvre, tu te rends dans le menu 'insertion' et là tu cliques sur 'Module' et tu colles le code.
Tu dois te mettre dans la feuille concernée (autrement dit -feuille active), ensuite tu reviens dans VBE,
tu cliques dans le module (juste pour y mettre le curseur - peu importe la position) et tu appuies sur la touche F5 qui exécute le code
ou
Mieux encore pour voir l’exécution du code ligne par ligne - tu réduis un peu la dimension de la fenêtre de VBE et tu appuies sur la touche F8 (c'est ce qu'on appelle exécution pas à pas). à chaque fois que tu appuies sur la touche F8 le code exécute une ligne.

Voilà, voilà, j'espère n'avoir rien oublier.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Essaye ça :
VB:
Sub MacroDate2()
'
Dim Lig As Long

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

Brudy

XLDnaute Junior
Ok je vois, j'avais juste omis que le bouton appel la macro et non l'intégrer directement sur le bouton.

Du coup j'ai saisis, merci pour l'explication :p

Concernant la plage que je te demandais, c'était la détermination de la colonne, ici 6 pour F,
Enfin bref, le matin j'ai un peu de mal :p

EDIT : Enfaite la macro ne marche pas comme je l'imaginais, elle report le même problème. Une date en 09.12.2017 ce transforme en 12/09/2017 :'(

Merci en tout cas ! et merci Marcel pour ta réponse entre temps !
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Si tu veux le résultat dans une autre colonne, par exemple G (col7)
VB:
Sub ModifDate()
Dim i As Integer
i = 1
    Do While Cells(i, 6) <> ""
        Cells(i, 7) = Replace(Cells(i, 6), ".", "/")
    i = i + 1
    Loop
End Sub
Sinon pas vraiment compris ton problème.
 

Brudy

XLDnaute Junior
Bonjour JHA,

impossible pour moi d'intégrer une formule, en tout cas dans la disposition de mon tableau puisque le remplacement intervient après un copier/coller.

Pour la macro : Ta macro fonctionne parfaitement et me fait découvrir une autre façon de l'écrire
Le problème c'est que si le jour est inférieur à 12, il est intervertit à l'usage de la macro.

Un 12.12.2012 sera un 12/12/2012 donc 12 décembre
un 19.12.2012 sera un 19/12/2017 donc 19 décembre
mais
un 10.12.2012 sera un 12/10/2012 un 10 décembre devient un 12 octobre o_O

Sans que je sache pour quelles raisons ?
 

TooFatBoy

XLDnaute Barbatruc
Le problème c'est que si le jour est inférieur à 12, il est intervertit à l'usage de la macro.

Un 12.12.2012 sera un 12/12/2012 donc 12 décembre
un 19.12.2012 sera un 19/12/2017 donc 19 décembre
mais
un 10.12.2012 sera un 12/10/2012 un 10 décembre devient un 12 octobre o_O

Sans que je sache pour quelles raisons ?
Ben la raison c'est qu'apparemment dans une macro Excel ne tient pas compte du format local et reste borné sur un format américain mm/dd/yyyy. Mais s'il voit que le mois est supérieur à douze, alors il interverti pour que ça donne une date valide.

C'est pourquoi avec ma macro j'intervertis le quantième du mois et le mois.
 

Brudy

XLDnaute Junior
Bonjour à tous,

Je reviens dans le cambouis après tout ce temps, et je tenais à vous remerciez de toutes vos propositions.


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.

Est ce que la modification en ligne par ligne que tu as appliqués dans ta macro à une solution plus optimal ?
 

Discussions similaires

Statistiques des forums

Discussions
312 197
Messages
2 086 104
Membres
103 118
dernier inscrit
mlaf4032