XL 2010 Trier de A à Z et calculer les doublons.

DAVID-44-

XLDnaute Occasionnel
Bonjour,
J'ai une feuille "commande" et un code pour faire un tri de A à Z de chaque section.
Je souhaiterais ajouter une fonction dans ce code afin de calculer les doublons et faire une seule ligne de ceux-ci.
Merci de votre aide.
Bonne journée.
Cordialement.
David.
 

Pièces jointes

  • COMMANDE - DAVID.xlsm
    37.8 KB · Affichages: 23

excfl

XLDnaute Barbatruc
Bonsoir le forum,
7931.jpg


Bonsoir sylvanu, job75

Pour dénombrer les doublons :

Doublons (compter les).png
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir David, Excfl,
J'ai supposé qu'il fallait compter par bloc et non pour l'ensemble.
En PJ un essai avec :
VB:
Sub Count_datas()
    Application.ScreenUpdating = False
    Filtrer_Data
    For L = Range("B65500").End(xlUp).Row To 3 Step -1
        If Cells(L, "B") = Cells(L - 1, "B") And Cells(L, "B") <> "" Then
            Cells(L - 1, "D") = Cells(L - 1, "D") + Cells(L, "D")
            Cells(L, 1).EntireRow.Delete
        End If
    Next L
End Sub
 

Pièces jointes

  • COMMANDE - DAVID (1).xlsm
    47.9 KB · Affichages: 10

job75

XLDnaute Barbatruc
Bonsoir DAVID-44-, excfl, sylvanu,

Avec des tableaux structurés c'est vraiment très simple, voyez ce fichier et la macro :
VB:
Sub Filtrer_Doublons()
Dim LO As ListObject, P As Range, i&
Application.ScreenUpdating = False
For Each LO In Sheets("COMMANDE").ListObjects 'tableaux structurés
    Set P = LO.Range
    P.Sort P(1), xlAscending, P(1, 3), , xlAscending, Header:=xlYes 'tri sur 2 colonnes
    For i = P.Rows.Count To 2 Step -1
        If P(i, 1) = P(i - 1, 1) And P(i, 3) = P(i - 1, 3) Then
            If IsNumeric(P(i - 1, 2)) And IsNumeric(P(i, 2)) Then P(i - 1, 2) = P(i - 1, 2) + P(i, 2)
            P.Rows(i).Delete xlUp
        End If
Next i, LO
End Sub
A+
 

Pièces jointes

  • COMMANDE - DAVID(1).xlsm
    43.5 KB · Affichages: 15

DAVID-44-

XLDnaute Occasionnel
Bonjour excfl, sylvanu, job75,

sylvanu, j'utilise ton code. Sur la page en exemple cela fonctionne bien, mais sur mon classeur d'origine, les lignes "vides" sont supprimées, car il y a une formule dedans.
(ex : ='[2 - SEMAINE.xlsm]COMMANDE'!B31) !!!!
J'ai bien essayé de modifier, mais je n'y arrive pas.
Avez-vous une solution ?
Merci de votre aide.
Bonne journée.
Cordialement.
David.
 

job75

XLDnaute Barbatruc
Bonjour DAVID-44-, le forum,

A priori les tableaux peuvent être n'importe où dans la feuille.

Il vaut donc mieux ne pas supprimer (ou insérer) des lignes mais redimensionner les tableaux, fichier (2) :
VB:
Sub Filtrer_Doublons()
Dim LO As ListObject, P As Range, n&, i&
Application.ScreenUpdating = False
For Each LO In Sheets("COMMANDE").ListObjects 'tableaux structurés
    Set P = LO.Range
    P.Sort P(1), xlAscending, P(1, 3), , xlAscending, Header:=xlYes 'tri sur 2 colonnes
    n = 0
    For i = P.Rows.Count To 2 Step -1
        If P(i, 1) = P(i - 1, 1) And P(i, 3) = P(i - 1, 3) Then
            If IsNumeric(P(i - 1, 2)) And IsNumeric(P(i, 2)) Then P(i - 1, 2) = P(i - 1, 2) + P(i, 2)
            P.Rows(i).ClearContents 'efface le contenu de la ligne
            n = n + 1 'compte les lignes effacées
        End If
    Next i
    If n Then
        P.Sort P(1), xlAscending, Header:=xlYes 'tri pour regrouper
        LO.Resize P.Resize(P.Rows.Count - n) 'redimensionne le tableau
        P.Rows(P.Rows.Count - n + 1).Resize(n).Clear 'RAZ si nécessaire
    End If
Next LO
End Sub
Bien sûr c'est aussi plus rapide.

A+
 

Pièces jointes

  • COMMANDE - DAVID(2).xlsm
    44.2 KB · Affichages: 6

mapomme

XLDnaute Barbatruc
Sur la page en exemple cela fonctionne bien, mais sur mon classeur d'origine, les lignes "vides" sont supprimées, car il y a une formule dedans.
Bonjour @DAVID-44- :)

114 messages publiés et vous ne fournissez pas un exemple représentatif de votre fichier ! :mad:
C'est désespérant et à la limite méprisant vis à vis de ceux qui cherchent à vous aider.
Mais vous pouvez encore corriger le tir.;)

Si vous avez des formules, il est possible que les tris et les suppressions de lignes aboutissent à un résultat non désiré . Demandez vous si le but ultime n'est pas d'avoir des tableaux sans formule mais qui se mettent automatiquement à jour quand on sélectionne la feuille commande ? Ou bien conserver votre feuille commande mais ajouter une feuille "Clôture commande" qui reprend votre tableau sans formule, trié et dédoublonné avec mise à jour automatique ou bien une actualisation manuelle avec indication de la date et heure d'actualisation.

Étudiez aussi la solution de @job75 basée sur tes tableaux structurés.
 
Dernière édition:

DAVID-44-

XLDnaute Occasionnel
Bonjour excfl, sylvanu, job75, mapomme,
Avant tout merci de votre aide et en aucun cas je veux être méprisant !
Aussi, si je vous communique que des feuilles qui ressemblent à celle que j'ai dans les classeurs, c'est avant tout pour que ma demande soit la plus simple et la plus claire possible. J'avoue que par moment mes questions ne sont pas très précises.
J'ai trois classeurs qui communiquent entre eux pour plusieurs fonctions différentes.
Je pense que vous allez prendre peur, car c'est une usine à gaz !!!!
La demande : Trier de A à Z et calculer les doublons correspond à la feuille "MENU LILIANE" dans le classeur "MENU".
Merci beaucoup de votre aide.
Bonne journée.
David.
 

Pièces jointes

  • MENU PREMIER.xlsx
    19.1 KB · Affichages: 2
  • SEMAINE PREMIER.xlsx
    17.8 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
315 146
Messages
2 116 758
Membres
112 852
dernier inscrit
Professeur 7