Sélectionner et copier le contenu des feuilles d'un worksheet

Julien -  
Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une code à concevoir et j'ai un peu de mal à le mettre en place.

Je dispose d'un classeur comprenant plusieurs feuilles. Dans chaque feuille, un historique de paiements, dont certains vont au delà de 2010, d'autres pas (date dans la colonne A, paiements dans la colonne B).

Je voudrais coller les paiements de chaque feuille l'un à la suite de l'autre, dans une même feuille, mais seulement si ces paiments vont au délà de 2010 (donc si, à partir de 2010, la colonne B présente des valeurs différentes de 0), et ainsi me retrouver avec une feuille globale reprennant tous les paiements qui vont au délà de 2010.

D'avance merci de votre aide,

Julien

4 réponses

  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Qu'avez-vous déjà essayé de réaliser ?
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Et au-delà de 2010 ou à partir de 2010 ?
      Ce n'est pas pareil...
      eric
      0
  2. Julien
     
    Bonjour et merci de vos réponses rapides.

    Voici le code que j'ai réalisé jusqu'à présent (soyez indulgents, je début en vba ;) ):

    Sub fusion2()

    N = Sheets.Count
    For i = 1 To N - 1 Step 1

    b = 0

    While b = 0
    For j = 1 To 250 Step 1
    If Sheets(i).Cells(1).Offset(j, 0).Value = "2011" Then b = 1 & ref = j

    Next j

    Wend

    If b = 1 Then Sheets(i).Range("A1:G500").Offset(ref, 0).Copy
    Paste Destination:=Worksheets("Total").Cells((i - 1) * 8 + 1)

    Next i

    End Sub

    De manière à sélectionner les données des paiemenst de chaque feuille, à partir de 2011, et les coller dans une feuille "Total", les uns à cotés des autres.

    A cela, il faudrait que je rajoute une condition, qui ne sélectionne les paiements et ne les copie que si la valeur du paiement en 2011 est différente de zéro.

    Autre souci: lorsque le run le Sub, vba se plante systématiquement, y a t'il un problème dans ce que j'ai codé?

    D'avance un grand merci,

    Julien
    0
  3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Merci pour l'information,
    Je regarderai demain pour une solution.
    0
  4. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    En attendant votre réponse voici une proposition pour date supérieur 31.12.2009 et paiement différent de zéro.
    Sub recap()
    datech = "31.12.2010"
    shtot = "Total"
    ct = Cells(Rows.Count, 1).End(xlUp).Row + 1
    ' boucle sur les feuilles du classeur
    For Each sh In Worksheets
    ' pas la feuille "Total"
        If sh.Name <> shtot Then
            MsgBox "La Feuille : " & sh.Name
    ' boucle sur les données et filtre sur date et montant 0
            For c = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row
                If sh.Cells(c, 1) > CDate(datech) And sh.Cells(c, 1) <> 0 Then
                    MsgBox " Données à copier ligne : " & c
                    ' ligne d'instruction pour insérer dans feuille "Total"
                    ' A adapter selon désir
                    Cells(ct, 1) = sh.Cells(c, 1)
                    Cells(ct, 2) = sh.Cells(c, 2)
                    ct = ct + 1
                End If
            
            Next c
        End If
    Next sh
    End Sub

    0