Recherche de valeurs apparaissants plus d'une fois

Bonjour,

j'aurais besoin de votre aide.

J'ai un tableau qui contient une colonne contenant des paires téléphoniques et une colonne avec des numéros

capture

J'aimerais afficher les valeurs qui apparaissent plus d'une fois de la colonne 'Paire' et afficher le numéro correspondant.

Dans l'exemple au dessus il devrait m'indiquer :

Paire 1.1 - Numéro 1234 - 4567

Paire 3.8 - Numéro 7890 - 7412 - 1236


Je vous joins un fichier test. Malheureusement je n'ai trouvé que des fonctions qui cherchent des doublons et je ne sais pas comment récupérer le numéro.

En vous remerciant d'avance

Bonjour à tous !

Une proposition via Power Query (nativement intégré à votre version Excel) :

bonjour,

méthode VBA (les temps présentés sont inférieur au présicion du chronomètre, donc sont purement indicatif, ils sont en principe égaux=immédiate)

bonjour

une méthode par formules matricielles (à l'ancienne)

cordialement

9loic67.xlsm (18.80 Ko)

re, méthode 2021-365 (à la neuve ?)

8loic67.xlsm (28.01 Ko)

Tout d'abord merci a tous pour votre aide.

Je n'ai même pas trouvé une seule solution que vous m'en proposé 4 ... lol

@JFL merci tu viens de faire découvrir Power Query ... tout fonctionne mais je suis sur un Excel d'entreprise. Ton code s'exécute mais je pense qu'il y a des restrictions d'entreprise, je n'arrive pas à afficher le bandeau Power Query. Merci beaucoup en tout cas.

@tulipe_4 même si c'est à l'ancienne cela fonctionne très bien :-) Par contre je n'ai mis qu'une toute petite partit des données. Au total je dois avoir 3000 lignes. Et si je veux afficher les doublons il faudrait que je refasse un bout de code qui balaye le tableau pour ensuite l'afficher. Merci aussi ca me rappel qu'il ni a pas que le VBA.

@BsAlv pour ta méthode Office 2021-365 c'est déjà bien que l'on ai office 2017 au boulot lol Par contre ta méthode par VBA c'est exactement ce qu'il me faut. 4 lignes et l'histoire est pliée ... et d'une rapidité ... j'avais lu pas mal d'articles sur les tableau mais j'ai du mal à les intégrer.

J'ai mis un temps certain à le comprendre. ...

Petite question additionnelle, pensez-vous que c'est possible de trier facilement les résultats de la plus petite paire à la plus grande ? En sachant qu'il faut trier en premiers en fonction des chiffres à gauche du point puis après les chiffres à droite du point.

Exemple de doublons :

5.6 numéro(s) - 4321
5.9 numéro(s) - 1234, 2369
9.7 numéro(s) - 4569
4.6 numéro(s) - 7896
4.2 numéro(s) - 4569

Donnerait

4.2 numéro(s) - 4569
4.6 numéro(s) - 7896
5.6 numéro(s) - 4321
5.9 numéro(s) - 1234, 2369
9.7 numéro(s) - 4569

En utilisant le fichier de BsAlv

Merci d'avance

Bonsoir à tous,

@JFL merci tu viens de faire découvrir Power Query ... tout fonctionne mais je suis sur un Excel d'entreprise. Ton code s'exécute mais je pense qu'il y a des restrictions d'entreprise, je n'arrive pas à afficher le bandeau Power Query. Merci beaucoup en tout cas.

Vous devriez trouver les commandes sur l'onglet "Données", dans le groupe "Récupérer et transformer".

Je vous livre une version amendée pour tenir compte de votre contrainte "tri" :

re, un tableau était plutôt inconnu, alors, la macro lit une plage au lieu d'un tableau ...

@JFL,

j'ai 365 mais je ne suis pas "Insider" et je reçois un PopUp, que ma version PQ est "une ancienne version"

schermafbeelding 2022 06 19 194636

Bonsoir,
@BsAlv,
Ce popup ne doit pas empêcher le bon fonctionnement de la requête, car il n'y a pas de fonctionnalités propres à une version Insider (bêta, pour ma part).
Cdlt.

Bonsoir à tous,

Pour le plaisir, une formule unique dynamique retournant l’entièreté du tableau attendu (

365 Insider) :

=LET(
t_Paire;TRIER(UNIQUE(FILTRE(t_Data[Paire];NB.SI(t_Data[Paire];t_Data[Paire])>1)));
ASSEMB.V(t_Data[#En-têtes];ASSEMB.H(t_Paire;BYROW(t_Paire;LAMBDA(r;JOINDRE.TEXTE(" ";1;TRIER(FILTRE(t_Data[Numéros];t_Data[Paire]=r)))))))
)

Bonsoir de nouveau !

@JFL,

j'ai 365 mais je ne suis pas "Insider" et je reçois un PopUp, que ma version PQ est "une ancienne version"

schermafbeelding 2022 06 19 194636

Ma version est plus récente. Ceci devrait expliquer cela !

image

@Jean-Eric, JFL,

je savais que le popup n'empêche pas le bon fonctionnement mais c'est peu probable, qu'il y a des changements significants pour PQ entre nos 2 versions.

Je supposais que le popup est plutôt "en général" et ne pas specific pour PQ, c'est pourquoi, j'avais ajouté ce smiley.

Merci encore une fois pour votre aide.

@JFL Ma version ne doit également pas être la bonne car cela ne fonctionne pas avec les formules .... De plus il me faudrait du VBA car je fais encore d'autres tests sur les numéros et j'affiche les données sur une UserForm par la suite

Par contre @BsAlv j'ai essayé et regardé ta dernière version. Il se trouve que le trie ne fonctionne pas correctement. En tout cas chez moi elle ne trie rien :

capture

J'ai rajouter quelques données au tableau pour justement avoir un mélange des paires.

J'ai regardé ta fonction de trie mais là cela me dépasse ... et je ne vois pas où cela peut bloquer

bonjour,

Mon tri était dans les numéros dans une ligne et ne pas entre les lignes, sorry.

Maintenant, cela se fait aussi, mais tout dépend du format des paires. Maintenant ils sont tous du type x.x, mais au moment où on mélange de types comme x.x, xx.x, x.xx etc, ... ?

C'est fait pour au maximum 3 chiffres avant et derrière le point, donc "xxx.xxx" (le point est nécessaire)

Bonjour à tous,

@JFL .... De plus il me faudrait du VBA car je fais encore d'autres tests sur les numéros et j'affiche les données sur une UserForm par la suite

Alors je vais laisser les spécialistes œuvrer ! Vous êtes entre de bonnes mains

@JFL merci en tout cas de votre aide et de votre intérêt

@BsAlv vous m'avez fait chauffer quelques neurones ... lol

par contre il y avait une petite erreur dans le code. J'ai tenté de comprendre et de trouver le soucis tout seul. J'ai réussi mais cela m'a pris 3h lolllll

L'erreur était à la fin après avoir trié les Paires et les numéros :

fl(i) = Left(fl(i), p) & " " & Join(SCA.toarray, ", ")     'ajouter les résultats sorté comme 2ième partie du string

Il fallait écrire :

fl(i) = Left(s, p) & " " & Join(SCA.toarray, ", ")     'ajouter les résultats sorté comme 2ième partie du string

Vous utilisiez la liste non triée

fl(i)

au lieu de

s

En tout cas merci beaucoup.

J'ai encore un autre petit soucis avec un autre bout de mon code.

Je vais clôturer ce post et je vais en ouvrir un nouveau.

A ceux qui veulent je mets le code final en attache

Rechercher des sujets similaires à "recherche valeurs apparaissants fois"