Microsoft 365 Macro comptage EAN identique et supprimer les doublons EAN

davidp

XLDnaute Occasionnel
Bonjour à tous ,

Désolé de vous déranger , j'ai encore besoin de votre aide pour réaliser une macro sur le fichier en annexe avec la particularité ci-dessous :

1. Comptage du nombre de fois ou l'on retrouve le même EAN dans la colonne C ( Ex : 4 pour l'EAN 8711200319015)
2. Suppression des EAN en doublon et mettre la quantité en colonne D

Je vous remercie d'avance pour votre aide même si je ne sais pas si cela est réalisable .

Bon dimanche

DAVIDP
 

Pièces jointes

  • FORUM 16 MAI 2021 V1.xlsx
    12.9 KB · Affichages: 27

davidp

XLDnaute Occasionnel
Bonjour Dudu2,
un grand merci pour votre aide , c'est exactement ce que je souhaitais , c'est parfait .
Vous êtes vraiment très fort .
Encore un grand merci , cela va me faire gagner un temps énorme .

Bonne soirée

DavidP
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous :),

Un autre essai. Le tableau doit être un tableau structuré. Le code est dans module1:
VB:
Sub OterDoublon()
Const Formule = "=countif([xxx],[@[xxx]])"
Dim enteteEAN As String, laFormule As String
   With Sheets("saisie").ListObjects(1)
      enteteEAN = .ListColumns(3).Range(1, 1)
      laFormule = Replace(Formule, "xxx", enteteEAN)
      .ListColumns(4).DataBodyRange.FormulaR1C1 = laFormule
      .ListColumns(4).DataBodyRange = .ListColumns(4).DataBodyRange.Value
      .Range.RemoveDuplicates Columns:=Array(3)
   End With
End Sub
 

Pièces jointes

  • davidp- compter-supprimer Doublon- v1.xlsm
    25.4 KB · Affichages: 9

mapomme

XLDnaute Barbatruc
Supporter XLD
Re à tous,

La même mais à partir d'une plage ordinaire. On se ramène au cas précédent.
VB:
Sub OterDoublon()
Const Formule = "=countif([xxx],[@[xxx]])"
Dim enteteEAN As String, laFormule As String, Nom As String
 
   With Sheets("saisie")
      With .ListObjects.Add(xlSrcRange, .Range(.Range("a4"), .Range("a4").End(xlDown).Offset(, 4)), , xlYes)
         Nom = .Name
         enteteEAN = .ListColumns(3).Range(1, 1)
         laFormule = Replace(Formule, "xxx", enteteEAN)
         .ListColumns(4).DataBodyRange.FormulaR1C1 = laFormule
         .ListColumns(4).DataBodyRange = .ListColumns(4).DataBodyRange.Value
         .Range.RemoveDuplicates Columns:=Array(3)
      End With
      .ListObjects(Nom).Unlist
   End With
End Sub
 

Pièces jointes

  • davidp- compter-supprimer Doublon- v11.xlsm
    25.4 KB · Affichages: 5

Dudu2

XLDnaute Barbatruc
Bonjour @merinos,
PowerQuery c'est magique ! A condition d'avoir la potion ou la baguette qui va avec.
Déjà rien que pour exécuter la requête, il faut savoir que c'est: Onglet Données + Actualiser tout.
Je le précise parce que pour ceux qui sont experts en PowerQuery ça semble évident mais ça ne l'est pas.

Tu as besoin des 2 tableaux pour obtenir le résultat ou c'est juste ton choix ?
 
Dernière édition:

merinos

XLDnaute Accro
Bonjour @merinos,
PowerQuery c'est magique ! A condition d'avoir la potion ou la baguette qui va avec.
Déjà rien que pour exécuter la requête, il faut savoir que c'est: Onglet Données + Actualiser tout.
Je le précise parce que pour ceux qui sont experts en PowerQuery ça semble évident mais ça ne l'est pas.

Tu as besoin des 2 tableaux pour obtenir le résultat ou c'est juste ton choix ?
Salut le fofo, Salut @Dudu2 ,

J'ai juste besoin de 2 tableau: la source et le resultat... donc j'aurais pu prendre la même source. mais pour ne pas changer ce qui fonctionnait deja, ... j'ai juste copié les données.

Pourquoi j'emploie PowerQuery pour ce genre de chose, car c'est souvant plus facile a employer que VB...
Je me fais l'avocat du diable... mais je suis plein d'admiration pour le code VB que certains font... rien de perso, @mapomme . Tout depend de ce qu'on réalise... Et comme on peut créer des query via une interphase graphique...
 

Dudu2

XLDnaute Barbatruc
Bonjour @merinos,
En effet j'ai survolé PQ via une vidéo ultra-basique et j'ai compris qu'il fallait une source sur laquelle on applique des requêtes successives.
Alors j'ai essayé et je ne suis même pas arrivé à sélectionner le tableau en source 😭.
Devrai-je me passer de PQ ad vitam eternam ? Bon, je vais me ré-inscrire en Master à l'université.

ScreenToGif01.gif
 
Dernière édition:

merinos

XLDnaute Accro
Salut @Dudu2 ,

Pourtant c'est devant tes yeux... "A partir d'un tableau" ... et si le tables n'existe pas, excel le crée.
Là tu cherches dans ls sources externes... c'est bien aussi, mais c'est pour la leçon 5...

1621335619410.png



Quand tu lance ton query, tu arrives dans le query editor.

A: le bouton pour sauver... et dire comment. tu peux aussi juste garder le resultat en memoire.
B: le GROUP By : je deffini comment grouper les lignes.
C: je vois les differentes étapes... et je peux changer leur ordre, en effacer...
A noter que le changement de type n'etait pas correct: les codes EAN etaient reconnus comme chiffres.. j'ai juste replacé ce type par text...
Quand tu double click sur une des étapes, un popup te montre ce qu'il fait...
1621335984849.png
 

Dudu2

XLDnaute Barbatruc
Désolé @davidp, ça tourne à la leçon PowerQuery pour définir la source.
Un truc qui devrait être totalement intuitif et pourtant que je n'arrive pas à maîtriser sur un simple tableau !

@merinos, A partir d'un tableau... Bien sûr que j'avais essayé ça, en vain.
Car dès que j'indique la zone du tableau source il me dit qu'il y a recouvrement car PQ veut créer un tableau !!?? Alors que j'essaie de lui désigner la source ! Je ne comprends vraiment pas la logique du truc.

ScreenToGif03.gif
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55