IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Interversion mois et jours lors d'un collage par macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 1
    Par défaut Interversion mois et jours lors d'un collage par macro
    Bonjour,

    N'étant pas un master en excel, je viens chercher de l'aide en espérant que quelqu'un puisse m'aider.

    Voilà, depuis quelques jours un de mes documents excel inverse systématiquement les mois et les jours d'une liste de date pour toutes les dates qui contiennent un jour inférieur/égal à 12.
    C'est à dire que 02/06/2018 devient le 06/02/2018.

    Cette liste de date provient d'un autre onglet en format JJ-MM-AAAA.

    La macro sert à copier l'onglet source, à coller en valeur la liste de dates, puis à changer les "-" en "/".

    Seulement, je constate que les jours et les mois sont intervertis.

    L'onglet destination est en format Date, lorsque je le passe en format standard, les dates qui sont normales restent en JJ/MM/AAAA, mais les dates qui ont été interverties passent en valeur numérique: ex: 43232.

    Pouvez-vous m'aider ?

    Pour information, la macro actuelle ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sheets("DAY-PIVOT").Select
        Cells.Select
        Selection.Copy
     
        Sheets("DAY_OPT").Select
        Cells.Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
     
        Sheets("DAY_OPT").Select
        Columns("D:D").Select
        Selection.Replace What:="-", Replacement:="/", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Range("A1").Select
    D'avance, je vous remercie pour votre aide !

    Workid

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Pour être sûr de conserver les bonnes valeurs, avant de faire la copie, sélectionnez la colonne des dates et mettez au format nombre, puis copiez et collez sur l'autre feuille et repassez au format date.

    Autre solution: Toujours avant de faire la copie, dans une cellule vide de la feuille 1, mettre la valeur 1, puis copier, sélectionnez ensuite la colonne des dates et collage spécial "Multiplication", puis copiez et collez sur l'autre feuille et repassez au format date.

    cdlt

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Teste avec ce code pour voir (je ne suis pas fan des Copier/Coller) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Sub Test()
     
        Dim Plage As Range
     
        Set Plage = DefPlage(Sheets("DAY-PIVOT"), 1, 1)
     
        With Sheets("DAY_OPT")
     
            .Range(.Cells(1, 1), .Cells(Plage.Rows.Count, Plage.Columns.Count)).Value = Plage.Value
            .Range(.Cells(1, 1), .Cells(Plage.Rows.Count, Plage.Columns.Count)).Replace "-", "/"
            'ou encore :
            '.Range(.Cells(1, 1), .Cells(Plage.Rows.Count, Plage.Columns.Count)).NumberFormat = "dd/mm/yyyy"
     
        End With
     
    End Sub
     
    Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range
     
        On Error GoTo Fin
     
        With Fe
     
            Set DefPlage = .Range(.Cells(L, C), _
                           .Cells(.Cells.Find("*", .[A1], -4123, , _
                           1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                           2, 2).Column))
     
        End With
     
        Exit Function
     
    Fin:
     
        Set DefPlage = Nothing
     
    End Function

Discussions similaires

  1. Recherche puis collage par macro
    Par ludion62 dans le forum Excel
    Réponses: 2
    Dernier message: 26/04/2013, 09h33
  2. [XL-2007] Définition du type de fichier lors de la sauvegarde par macro
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2009, 10h17
  3. Probleme inversion jour et mois lors d'une copie par macro
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/09/2008, 16h29
  4. [Requete] Inversion mois/jours lors de resultat nul
    Par Jeremie_Vi dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/07/2006, 13h47
  5. Formulaire bloqué lors d'une ouverture par macro.
    Par Monsieur Peck dans le forum IHM
    Réponses: 6
    Dernier message: 16/06/2006, 18h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo