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 -
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
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
-
Bonjour,
Qu'avez-vous déjà essayé de réaliser ?
-
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 -
Bonjour,
Merci pour l'information,
Je regarderai demain pour une solution.
-
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