Création d'une macro

Stephane13 -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je souhaiterai créer une macro Excel me permettant, sur sélection de cellules, de modifier une date US (MM/JJ/AAAA) en date FR (JJ/MM/AAAA).
Je suis amené à traiter des dizaines de milliers de lignes dans mes tableurs et la solution "Données - Convertir - Délimité - Date : MJA" n'est plus viable.
Je voudrais donc créer une macro qui me fasse ce travail (avec touche de raccourci) sur des cellules que je sélectionnerais.
J'ai tenté de faire une macro enregistrée qui ne fonctionne pas car je dois justement avoir la possibilité de sélectionner librement les cellules que je souhaite transformer.
En vous remerciant par avance pour votre aide
bonne journée

7 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    .."J'ai tenté de faire une macro enregistrée qui ne fonctionne pas car je dois justement avoir la possibilité de sélectionner librement les cellules que je souhaite transformer. "...

    Bin montre la pour qu'on puisse t’aider
    0
  2. Stephane13
     
    Bonjour,
    Voici la macro créée en mode enregistrement :
    Sub DATEUS()
    '
    ' DATEUS Macro
    '
    ' Touche de raccourci du clavier: Ctrl+n
    '
    Range("A2:A8").Select
    Selection.TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 3), TrailingMinusNumbers:=True
    End Sub

    Par défaut elle fonctionne uniquement sur les cellules A2-A8
    L'idée est qu'elle fonctionne sur des cellules que je veux sélectionner avec la souris

    Merci pour votre aide
    Bonne journée
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Bonjour

    pour sélectionner le départ et l'arrivée ( à incorporer dans ta macro)

    Dim Zone As Range, Cible As Range
    Zone = Application.InputBox(prompt:="Sélectionnez la zone à transposer", Type:=64)
    Cible = Application.InputBox(prompt:="Sélectionnez la cellule de destination", Type:=8)

    0
    1. Stephane13
       
      Boonjour Michel
      Merci beaucoup je vais essayer
      Bonne journée
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Pour compléter la proposition de michel que je salue cordialement au passage, peux tu envoyer un bout de ton fichier et préciser le résultat attendu (en particulier : où veux tu envoyer la date modifiée). Utilises https://mon-partage.fr/ et joins le lien obtenu à ton prochain message

    Cdlmnt
    0
    1. Stephane13
       
      Bonjour CCM
      Merci beaucoup
      Je vais effectivement créer un tableur excel avec des cellules rouge (à transformer avec la macro) et des cellules verte (Format date correct) et le charger sur le partage
      Bonne journée
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    il faut traiter tes dates au moment de l'importation et pas après. Sinon tu risques d'avoir des mauvaises interprétations que tu ne peux plus détecter.
    eric
    0
    1. Stephane13
       
      Bonjour Eriiic
      J'ai oublié de préciser un détail important dans mon post.
      Le tableeux excel que je traite est le résultat d'une conversion d'un document pdf (non scanné) réalisé avec le logiciel PDF2XL
      C'est pour cela que je dois pouvoir intervenir sur la sélection des cellules comme je le souhaite.
      Cordialement Stéphane
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Dans ce cas es-tu sûr à 100% de ne pas avoir de dates comme le 03/04 qui serait devenu le 04/03 et que tu le considères comme valide ?
      A ta place je ferai quelques sondages pour m'en assurer...
      Si pb, le plus sûr c'est de copier le texte du pdf (non scanné, ça tombe bien) et de le coller dans des colonnes au format texte.
      Comme ça tu es sûr d'avoir l'original et une simple formule te fabrique la date correcte à coup sûr :
      =SI(ET(STXT(A2;3;1)="/";STXT(A2;6;1)="/");DATE(DROITE(A2;4);GAUCHE(A2;2);STXT(A2;4;2));"")

      eric
      0
  7. gyrus
     
    Bonjour,

    Tu peux essayer ce code
    Sub DATEUS()
    ' Touche de raccourci du clavier: Ctrl+n
    Dim Plage As Range, Cel As Range
    Set Plage = Application.InputBox(prompt:="Sélectionnez la plage à convertir", Type:=8)
    For Each Cel In Plage
    If IsDate(Cel.Value) Then
    Cel.NumberFormat = "dd/mm/yyyy"
    End If
    Next Cel
    End Sub

    Cordialement.
    0
    1. Stephane13
       
      Bonjour Gyrus
      Merci pour ton aide
      Je viens de tester. Hélas ça ne fonctionne pas (CTRL+n = suppression de toutes les cellules)
      Bonne journée
      0
    2. gyrus
       
      As-tu vérifié que le raccourci clavier Ctrl + n est bien associé à la macro ?
      A priori, ce devrait être le cas puisqu’il est indiqué dans ta macro DATEUS.
      (Par défaut, le raccourci Ctrl+N crée un classeur vierge).
      Cordialement.
      0
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    En attendant ton fichier, peut être ceci pourrait convenir
    Public Sub OK()
    Dim cel As Range, dus As String, dfr As String, d As Long
    Application.ScreenUpdating = False
    For Each cel In Selection
      dus = cel.Value
      dfr = Mid(dus, 4, 2) & "/" & Left(dus, 2) & "/" & Right(dus, 4)
      d = CDate(dfr)
      cel.Value = d
      cel.NumberFormat = "dd/mm/yyyy"
    Next cel
    End Sub


    https://mon-partage.fr/f/TK54aqlj/

    Cdlmnt
    0