XL 2013 VBA EQUIV sur plusieurs lignes

Leché

XLDnaute Junior
Bonjour à tous et à toute,

A défaut d'avoir trouver une solution avec des formules, il me faudrait un petit code magique, afin que :
- chaque référence de la colonne B2 (onglet 1), soit rechercher dans la base de donnée(feuil 1 ; colonne A)
- qu’il en ressorte le numéro de ligne ou la référence est appelée
- et cela à chaque fois que la ref est appelé dans le Bdb.

Si la référence est appelée X fois dans la base de donnée, il faudrait insérer X ligne dans l’onglet 1 avec la ref et le numéro de ligne (qui est automatique avec la formule EQUIV)

Mes essais avec les formules n'ont rien donné, la formule EQUIV ne récupère que la première ligne ou la ref est appelé , mais pas celles d'en dessous.

Merci pour vos futurs retours,

Cordialement,
 

Pièces jointes

  • Classeur1.xlsx
    773.1 KB · Affichages: 10

JHA

XLDnaute Barbatruc
Bonjour à tous,

A essayer par formule matricielle
VB:
=SIERREUR(SI(C2=0;0;PETITE.VALEUR(SI('Feuil1 (2)'!$A$2:$A$6091=B2;LIGNE('Feuil1 (2)'!$A$2:$A$6091));NB.SI($B$2:$B2;$B2)));"Plus de correspondance")

JHA
 

Pièces jointes

  • Classeur1 (27).xlsx
    897.6 KB · Affichages: 3

Leché

XLDnaute Junior
Bonjour à tous,

A essayer par formule matricielle
VB:
=SIERREUR(SI(C2=0;0;PETITE.VALEUR(SI('Feuil1 (2)'!$A$2:$A$6091=B2;LIGNE('Feuil1 (2)'!$A$2:$A$6091));NB.SI($B$2:$B2;$B2)));"Plus de correspondance")

JHA

Sa me dis qu'il y a d'autre correspondance mais sans ressortir la ligne non ? De plus , chaque référence de la colonne B2 , ne peut être appelé qu'une fois dans ce tableau (suite à une extraction) donc , il faudrait tester chaque référence dans le Bdd et avoir le fameux code pour duplique ligne si plusieurs apparition dans la feuil 1.

Je jette un coup d’œil après déjeuné.

Merci de ton retour
 

Leché

XLDnaute Junior
Bonjour,

En faite cela me demande de gérer en plus le tableau des doublons.

A chaque fois que j'ai "plus de correspondance" dans colonne D, je suis obligé d'aller regarder dans le tableau des doublons les autres correspondances et les copier/coller dans ma colonne B et D. Cela ne peut pas être fait automatiquement ?

Sinon le principe est bien là, merci beaucoup

Cordialement,
 

Leché

XLDnaute Junior
Un simple renvoi des valeurs de la colonne B me suffit afin de faire le lien avec l'autre onglet. (En cellule G2 je met =B2 et je fais tirer jusqu’à la fin.

Merci pour ta précieuse aide JHA.

Je reste a l'écoute si quelqu'un à un bout de code en VBA

Cordialement,
 

Leché

XLDnaute Junior
Bonjour, j'essai de comprendre plus en détail comment marche la formule (pour ma culture personnelle) cependant je comprend pas le "COLONNE (A:A)" , qui pointe sur une colonne sans cellule. (La formule marche, mais je comprend pas le pourquoi du comment)

VB:
=SIERREUR(PETITE.VALEUR(SI('Feuil1 (2)'!$A$2:$A$15000=$G2;LIGNE('Feuil1 (2)'!$A$2:$A$15000));COLONNE(A:A));"nok")
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Dans la formule proposée, on utilise la fonction PETITE.VALEUR(matrice, k)
La syntaxe de la fonction PETITE.VALEUR contient les arguments suivants :
  • matrice Obligatoire. Représente une matrice ou une plage de données numériques dans laquelle vous recherchez la k-ième plus petite valeur.
  • k Obligatoire. Représente, dans la matrice ou la plage, le rang de la donnée à renvoyer, déterminé à partir de la valeur la plus petite.

Donc il faut définir une plage de données puis le rang (1,2,3,4,etc..). Afin de recopier cette formule vers la droite sans modifier ce critère de rang dans la formule, on utilise une valeur qui varie.
COLONNE(A:A) équivaut à 1
COLONNE(B:B) équivaut à 2
etc..

JHA
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 174
Membres
112 677
dernier inscrit
Justine11