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 :

Copie de données entre deux feuilles avec condition "Année"


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 116
    Points : 66
    Points
    66
    Par défaut Copie de données entre deux feuilles avec condition "Année"
    Bonjour à tous,

    J'ai un problème qui concerne le transfert de données entre deux feuilles d'un même fichier.
    Ce fichier concerne l'ensemble des travaux que la ville de Grenoble a réalisé (ou doit réaliser) entre 2011 et 2020 et est composé de deux feuilles :

    - Feuille "Données" ==> correspond à l'ensemble des travaux réalisés ou à réaliser entre 2011 et 2020 (1 ligne = 1 travail)
    - Feuille "Annexe1" ==> correspond aux travaux réalisés sur une année spécifique

    Le but de cet annexe est que l'on choisisse l'année que l'on souhaite consulter, par l'intermédiaire d'une liste déroulante placée en colonne D ligne 2.

    Par exemple, si je choisis dans cette cellule l'année 2012 et que je clique sur le bouton "Valider" (auquel ma macro est affectée), il faudrait que tous les travaux prévus pour 2012 apparaissent dans cet annexe. Idem si je choisis une autre année.
    Cette information concernant l'année est précisée en colonne H de mon onglet "Données"


    J'ai mi au point un code VBA (copier d'un autre code que j'avais mis en place il y a longtemps, car cela fait longtemps que je n'ai pas utiliser ce langage) :

    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
    39
    Sub Annexe1()
     
    'Déclaration des variables'
    Dim MonAnnée As Integer
    Dim Feuille_Source As Worksheet
    Set Feuille_Source = Worksheets("Données")
    Dim Feuille_Cible As Worksheet
    Set Feuille_Cible = Worksheets("Annexe1")
    Dim lig As Long
    Dim DerLig As Long, ligne_Fin As Long
    Dim end_Line As Long
     
    'Récupération de la dernière ligne remplie'
    DerLig = Feuille_Source.Range("B" & Rows.Count).End(xlUp).Row
     
    'Copie de la dernière ligne remplie'
    For lig = 104 To DerLig
     Feuille_Source.Activate
        MonAnnée = Trim(Feuille_Source.Cells(lig, 8).Value)
        Feuille_Source.Range(Cells(lig, 4), Cells(lig, 6), Cells(lig, 7), Cells(lig, 8), Cells(lig, 11), Cells(lig, 10), Cells(lig, 26), Cells(lig, 27), Cells(lig, 28), Cells(lig, 13), Cells(lig, 29), Cells(lig, 30), Cells(lig, 31), Cells(lig, 32)).Copy
     Feuille_Cible.Activate
     
                            'Recherche du programme correspondant puis copie de la ligne à la suite de ce programme"
                            ligne_Fin = Range("b" & Rows.Count).End(xlUp).Row
                            Set R = Feuille_Cible.Range(Cells(2, 4)).Find(MonAnnée, lookat:=xlWhole)
                                If Not R Is Nothing Then
                                   ligneDeb = R.Row
                                End If
                                nbVal = Application.WorksheetFunction.CountIf(Range(Cells(ligneDeb, 8), Cells(ligne_Fin, 8)), MonAnnée) - 1
                                end_Line = ligneDeb + nbVal
                                Feuille_Cible.Cells(end_Line + 1, 2).Select
                                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
     
                               Application.CutCopyMode = False
     
     
    Next lig
     
    End Sub

    Ce code bloque à la ligne :
    Feuille_Source.Range(Cells(lig, 4), Cells(lig, 6), Cells(lig, 7), Cells(lig, 8), Cells(lig, 11), Cells(lig, 10), Cells(lig, 26), Cells(lig, 27), Cells(lig, 28), Cells(lig, 13), Cells(lig, 29), Cells(lig, 30), Cells(lig, 31), Cells(lig, 32)).Copy


    Avez-vous une idée de la cause de ce blocage à cette ligne ? Et pensez-vous que ce code correspond bien à ce que je veux faire ?

    Merci d'avance pour vos réponses !

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je ne peux pas vérifier tout ton code mais essayes cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ......
    With Feuille_Source
      DerLig = Feuille_Source.Range("B" & .Rows.Count).End(xlUp).Row
      'Copie de la dernière ligne remplie'
      For lig = 104 To DerLig
        MonAnnée = Trim(.Cells(lig, 8).Value)
        Application.Union(.Cells(lig, 4), .Cells(lig, 6), .Cells(lig, 7), .Cells(lig, 8), .Cells(lig, 11), .Cells(lig, 10), .Cells(lig, 26), .Cells(lig, 27), .Cells(lig, 28), .Cells(lig, 13), .Cells(lig, 29), .Cells(lig, 30), .Cells(lig, 31), .Cells(lig, 32)).Copy
    ........
    End With'à ne pas oublier au bon endroit
    attention, tu as des variables non déclarées
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

Discussions similaires

  1. Transfert de données entre deux tables avec conditions
    Par ric009 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/03/2014, 09h47
  2. [XL-2007] VBA - Copie de données entre deux feuilles et restructuration
    Par Allure dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/09/2013, 00h53
  3. [XL-2010] Copie de données entre deux feuilles sans doublons
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/05/2013, 15h07
  4. Copie de données entre deux serveurs mysql
    Par hugue1 dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/10/2007, 19h59
  5. Concordances de données entre deux feuilles
    Par lulu24100 dans le forum Excel
    Réponses: 7
    Dernier message: 07/08/2007, 11h55

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