Récuperation différentes occurences RECHERCHEV

Sn4ke

XLDnaute Nouveau
Bonjour à tous, je fais appel à votre aide concernant la récupération de des occurrences (autres que la première) d’un "RECHERCHEV".
Pour exemple vous trouverez le fichier joint, je souhaiterais que dans l’onglet résultat les différentes occurrence d’un recherche V sur la marque soit listées.

Est-ce possible sans macro ? Je sais que ça l’est avec, mais le vb a quelques opposant dans mon organisation.
 

Pièces jointes

  • fichier_exemple.xls
    31 KB · Affichages: 34
  • fichier_exemple.xls
    31 KB · Affichages: 40
  • fichier_exemple.xls
    31 KB · Affichages: 40

Dugenou

XLDnaute Barbatruc
Re : Récuperation différentes occurences RECHERCHEV

Bonjour,
Il te faut utiliser une formule matricielle (validée par ctrl+maj prov + enter)
Code:
=INDEX(Feuil1!$B$1:$B$13;PETITE.VALEUR(SI(Feuil1!$A$1:$A$12=restultat!$A2;LIGNE(Feuil1!$A$1:$A$12);13);NBVAL(restultat!$A2:A2)))&""
la valeur si faux du SI : 13 correspond à la permière ligne vide sous tes données
il faut adapter cette valeur à ton fichier réel, de même avec la partie INDEX(Feuil1!$B$1:$B$13 qui doit commencer toujours à la ligne1 et finir à la première ligne vide.
Le &"" à la fin permet de ne pas afficher les valeurs 0.

Si tu es en Excel 2007 ou plus tu peux utiliser sierreur, ne pas spécifier de valeur pour le faux du SI avec

Code:
=SIERREUR(INDEX(Feuil1!$B$1:$B$12;PETITE.VALEUR(SI(Feuil1!$A$1:$A$12=restultat!$A7;LIGNE(Feuil1!$A$1:$A$12));NBVAL(restultat!$A7:A7)));"")

Voir pj
 

Pièces jointes

  • sn4ke.xls
    33 KB · Affichages: 37

Tibo62

XLDnaute Occasionnel
Re : Récuperation différentes occurences RECHERCHEV

Bonjour,
Sans macro la seule solution est que ton tableau soit trier par ordre comme sa tu modifie la plage de recherche du recherchev en supprimant à chaque fois celle qui a été prise juste avant. Je vais regarder ton fichier plus en détails et je te posterai un résultat.
 

Tibo62

XLDnaute Occasionnel
Re : Récuperation différentes occurences RECHERCHEV

Bonjour Dugenou,

Ta formule fonctionne parfaitement bien.

Sn4ke tu peux regarder un exemple que je te met en fichier joint qui fonctionne avec la formule indirect c'est une solution après tout dépend ton utilité.

A bientôt.
 

Pièces jointes

  • fichier_exemple.xls
    31.5 KB · Affichages: 35
  • fichier_exemple.xls
    31.5 KB · Affichages: 43
  • fichier_exemple.xls
    31.5 KB · Affichages: 41

klin89

XLDnaute Accro
Re : Récuperation différentes occurences RECHERCHEV

Bonsoir Snk4e, Tibo62, Dugenou, le forum :)

Pour les réticents au VBA :
A tester dans le fichier du post #1, résultat dans la même feuille
VB:
Sub test1()
Dim a, b(), i As Long, n As Long, maxCol As Integer, w()
    Application.ScreenUpdating = False
    With Sheets("Feuil1").Range("A1").CurrentRegion
        a = .Value
        ReDim b(1 To UBound(a, 1), 1 To UBound(a, 1) + 1)
        With CreateObject("Scripting.Dictionary")
            .CompareMode = 1
            For i = 1 To UBound(a, 1)
                If Not .exists(a(i, 1)) Then
                    n = n + 1
                    b(n, 1) = a(i, 1)
                    .Add a(i, 1), Array(n, 1)
                End If
                w = .Item(a(i, 1))
                w(1) = w(1) + 1
                b(w(0), w(1)) = a(i, 2)
                maxCol = Application.Max(maxCol, w(1))
                .Item(a(i, 1)) = w
            Next
        End With
        'Résultat dans la même feuille
        'Restitution et mise en forme
        With .Offset(, .Columns.Count + 1).Resize(n, maxCol)
            .CurrentRegion.Clear
            .Cells(1).Resize(, 2).Value = [{"Marque","Modèle"}]
            .Offset(1).Value = b
            If maxCol > 2 Then
                With .Cells(2)
                    .Value = "Modèle" & 1
                    .AutoFill .Resize(, maxCol - 1)
                End With
            End If
            With .CurrentRegion
                With .Rows(1)
                    .Font.Bold = True
                    .Interior.ColorIndex = 40
                    .BorderAround Weight:=xlThin
                End With
                .Font.Name = "calibri"
                .VerticalAlignment = xlCenter
                .HorizontalAlignment = xlCenter
                .Borders(xlInsideVertical).Weight = xlThin
                .BorderAround Weight:=xlThin
            End With
        End With
    End With
    Application.ScreenUpdating = True
End Sub
Klin89
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 339
Membres
102 865
dernier inscrit
FreyaSalander