Pb de regoupement et tri

Bonjour,

Maintenant que mon pb de date est résolu, je bloque un peu sur la manière de regrouper des infos se trouvant sur des feuilles différentes sur une seule feuille selon des critères bien précis.

Exemple :

https://www.excel-pratique.com/~files/doc/graham_pbtri.xls

Ce tableau contient 2 feuilles C01 et C02. j'aimerais que pour le mois de janvier, les infos de ces 2 feuilles a savoir la date, le n°de facture, le n° d'action et le TTC soit centralisé sur une meme feuille mais uniquement si il n'y a pas de "R" a coté du TTC.

Dites le moi si j'abuse...

Merci d'avance.

Re bonjour graham

Je ne sais pas faire.

A mon avis, il faut de nouveau passer par VBA, et je suis incompétent.

Si personne ne répond, je pourrai peut être te proposer une solution XL4 (c'est assez compliqué), mais comme ton fichier contient déjà du code VBA, il serait plus rationnel de continuer.

Laissons donc venir les spécialistes VBA

Cordialement

Salut

C'est vrai que t'abuse : tu viens sur un site de dépannage pour te faire dépanner. Quelle horreur

une proposition Par VBA (sans être un spécialiste, mais tant pis)

https://www.excel-pratique.com/~files/doc/z5ZOAgraham_pbtri_Mod.xls

En changeant le mois en B2 de la feuille récap, ça met à jour la liste et ça la trie par Date/N°facture croissants

A+

Merci bcp c'est exactement ce qu'il me fallait.

par contre, c'est presque terminé mais pas tout a fait.

Je n'arrive a modifier le code afin de pouvoir faire la recherche sur plusieurs feuilles numérotées comme ceci : C01,C02,C06,C10,C11,C14,.....C42,S01,S02,S03,S04,S05.

Mon pb donc est que le code cheche la feuille C03 qui n'existe pas lorsque j'agrandi les bornes de X.

De même comment intégrer les 5 dernières feuilles S01,S02,S03,S04,S05.

je continue a chercher, mais si vous voulez me donner la solution, ne vous génez pas.

Merci encore.

Salut

comme tu avait 2 feuille CO1 et CO2, je ne suis pas allé plus loin.

Mais tu peux remplacer la boucle

For X = 1 To 2
    With Sheets("C0" & X)
        .......
   End With
Next X

(Le code des autres instructions restant le même par

Dim F as Worksheet

à ajouter dans la liste des déclarations et

For each F in sheets
    if F.Name <> "Récap" then
        With F
            ..........
        End With
   End If
Next F

donc, tu parcours toutes les feuilles, sauf celles dont tu défins une exclusion (entre autres, celle où tu copies le résultat. s'il y en a plusieur, tu les inclues idans le test

F.Namme <>"AA" or F.Name<>"BB" or...

A+

J'ai toujours pas compris

je ne comprend pas ou je dois inserer ce code et a koi il peut bien servir et qu'est ce que F.

désolé.

je ne peux pas ouvrir le fichier mais pour ouvrir le code:

tu vas dans:

outils/macro/visual basic et là tu as tous les codes dispos dans ton classeur...

merci, mais je sais aller dans le code. Ce que je n'arrive pas a faire c le modifier afin d'obtenir les modifs désirées comme indiquées dans mon post + haut.

je remet le lien du tableau :

https://www.excel-pratique.com/~files/doc/z5ZOAgraham_pbtri_Mod_4.xls

Salut

Clic-droit sur le nom de l'onglet Récap>>Menu contextuel>>visualiser le code et remplacer la macro de même nom

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As String
Dim F As Worksheet
Dim Lig As Long
Dim Cel As Range
If Target.Address(0, 0) <> "B2" Then Exit Sub
'si le changement ne concerne ni B1, on sort

Range("A6:D23").ClearContents
'effacement anciens
Select Case Range("B2")
    Case "JANVIER"
        Plage = "A6:A15"
    Case "FEVRIER"
        Plage = "F6:F15"
    Case "MARS"
        Plage = "K6:K15"
    Case "AVRIL"
        Plage = "P6:P15"
    Case "MAI"
        Plage = "A18:A27"
    Case "JUIN"
        Plage = "F18:F27"
    Case "JUILLET"
        Plage = "K18:K27"
    Case "AOUT"
        Plage = "P18:P27"
    Case "SEPTEMBRE"
        Plage = "A30:A39"
    Case "OCTOBRE"
        Plage = "F30:F39"
    Case "NOVEMBRE"
        Plage = "K30:K39"
    Case "DECEMBRE"
        Plage = "P30:P39"
End Select
'Sélection de la plage de recherche en fonction du mois
Lig = 6
For Each F In ThisWorkbook.Sheets
    If F.Name <> "Récap" Then
        With F
            For Each Cel In .Range(Plage)
                If IsDate(Cel) And UCase(Cel.Offset(0, 4)) <> "R" Then
                    .Range(.Range(Cel.Address), .Range(Cel.Offset(0, 3).Address)).Copy
                    Range("A" & Lig).PasteSpecial (xlPasteValues)
                    Lig = Lig + 1
                    Application.CutCopyMode = False
                End If
            Next Cel
        End With
    End If
Next F
Range("A5:D" & [a65536].End(xlUp).Row).Sort Key1:=Range("A6"), Order1:=xlAscending, _
            Key2:=Range("B6"), Order2:=xlAscending, _
            Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
            Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
Range("B2").Activate
End Sub

parcours toutes les feuilles dont le nom est diffétent de Récap"

A+

Rechercher des sujets similaires à "regoupement tri"