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 :

Copier coller en fonction des dates


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 130
    Par défaut Copier coller en fonction des dates
    Bonjour a tous,

    Est ce quelqu'un saurait comment faire pour copier les données d'une colonne, d'une année à l'autre.
    En colonne A j'ai des dates du 1er Janvier 2011 à l' "infini".

    J'aimerais copier les données qu'il y a sur la colonne A du 1er Janvier 2011 au 31 Décembre 2011, toujours sur la colonne A mais du 1er Janvier 2012 au 31 Décembre 2012.

    Et c'est là que ça se complique je voudrais le généraliser.
    Si je lance ma macro en 2012, il devrait copier les données de 2011 sur 2012.
    Si je lance ma macro en 2013, il devrait copier les données de 2012 sur 2013.

    Je ne sais pas si c'est claire.
    Rien qu'en l'énonçant, ça me parait infaisable !!!!!!

    Quelqu'un aurait t-il une solution à me proposer ?

    Trés cordialement.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2010
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 240
    Par défaut
    Bonjour,

    Je pense que c'est possible, mais pour moi j'aurais besoin de plus d'information.

    Peux tu mettre une photo de ton fichier ou ton fichier directement pour que je puisse regarder

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 130
    Par défaut
    Merci de ta réponse
    Excuse moi je viens à peine de la voir.

    Voila le fichier test.

    Il y a des dates en colonne A.
    Et de données en fonction des dates en colonne B.
    Le tout sur l'année 2010.

    Merci de ton aide.
    Trés sincèrement.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Essaie ce code, il fonctionne si les dates sont toujours dans l'ordre :

    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
    Option Explicit
     
    Public Sub test()
        copieAnnee 2010, 2011
    End Sub
     
    Public Sub copieAnnee(ByVal anneeSource As Integer, ByVal anneeCopie As Integer)
        Dim firstRow, lastRow, corresRow, i As Integer
        Dim rg As Range
        Set rg = Worksheets("Feuil1").Range("A:A")
        Dim dt As Date
     
        firstRow = WorksheetFunction.Match(CDbl(DateSerial(anneeSource, 1, 1)), rg, 1)
        lastRow = WorksheetFunction.Match(CDbl(DateSerial(anneeSource, 12, 31)), rg, 1)
        If Year(rg.Cells(firstRow, 1)) < anneeSource Then firstRow = firstRow + 1
     
        For i = firstRow To lastRow
            dt = rg.Cells(i, 1).Value
            On Error Resume Next
            corresRow = WorksheetFunction.Match(CDbl(DateAdd("yyyy", 1, dt)), rg, 0)
            If Err.Number = 0 Then
                rg.Cells(corresRow, 1).Offset(0, 1).Value = rg.Cells(i, 1).Offset(0, 1).Value
            End If
            On Error GoTo 0
        Next i
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/09/2014, 15h16
  2. Copier tableau HTML avec des dates
    Par j@yce dans le forum Excel
    Réponses: 1
    Dernier message: 30/04/2009, 11h41
  3. Réponses: 2
    Dernier message: 20/12/2008, 16h45
  4. Problème de sélection en fonction des dates
    Par skare dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 22/06/2007, 06h47
  5. [Dates] Une fonction des dates
    Par amine_en_france dans le forum Langage
    Réponses: 3
    Dernier message: 06/03/2007, 12h07

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