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

  • Initiateur de la discussion Initiateur de la discussion DAVID-44-
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Bonsoir le forum,
7931.jpg


Bonsoir sylvanu, job75

Pour dénombrer les doublons :

Doublons (compter les).png
 
Dernière édition:
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

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

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.
 
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

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 ! 😡
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:
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
337
Réponses
2
Affichages
209
Réponses
7
Affichages
286
Retour