Extraire avec classement

Florian53

XLDnaute Impliqué
Bonjour à tous,

Je souhaiterais en vba extraire une liste de famille ("D2:D50") par rapport à son rang (("C2:C50"), j'aimerais que ces familles ce colle en mode transpose sur la ligne de la feuil("Données").

J'ai essayé d’adapter un code mais sa ne fonctionne pas :

VB:
Sub Family()
'Déclaration des variables.
Dim arrBDD()
Dim shBDD As Worksheet, shDonn As Worksheet
Dim dico As Object
Dim i&
Dim valeurcherche

j = 0

'Enregistrement des objets.
Set shBDD = ThisWorkbook.Sheets("Feuil2")
Set shDonn = ThisWorkbook.Sheets("Données")
Set dico = CreateObject("Scripting.Dictionary")

For j = 0 To 50
'Enregistrement du tableau arrBDD.
With shBDD
    i = .Cells.Find("1" + j, , , , xlByRows, xlPrevious).Row
    arrBDD = .Range(.Cells(2, "C"), .Cells(i, "D")).Value
End With

'Enregistrement des critères.
With shBDD
    valeurcherche = j + 1
End With

'Boucle du tableau virtuel.
For i = LBound(arrBDD) + 1 To UBound(arrBDD)

    If arrBDD(i, 1) = valeurcherche Then
        dico(arrBDD(i, 2)) = dico(arrBDD(i, 2))
    End If
   
Next i
Next j

'Report des sommes dans la feuille Données.
With shDonn
    i = 4
    Do While .Cells(2, i).Value <> ""
        .Cells(2, 4).Offset(, 1).Value = dico(.Cells(2, "4").Value)
        i = i + 1
    Loop
End With
End Sub

Pouvez vous m'aider svp?
 

Pièces jointes

  • test3.xlsx
    16.5 KB · Affichages: 20

thebenoit59

XLDnaute Accro
Bonjour Florian.

Le code que je t'avais fourni ne correspond pas du tout à cette problématique...

VB:
Option Explicit

Sub Family()
'Déclaration des variables.
Dim arrBDD()
Dim shBDD As Worksheet, shDonn As Worksheet
Dim dico As Object
Dim i&

'Enregistrement des objets.
Set shBDD = ThisWorkbook.Sheets("Feuil2")
Set shDonn = ThisWorkbook.Sheets("Données")
Set dico = CreateObject("Scripting.Dictionary")

'Enregistrement du tableau arrBDD.
With shBDD
    i = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
    arrBDD = .Range(.Cells(2, "C"), .Cells(i, "D")).Value
End With

'Boucle du tableau virtuel.
For i = LBound(arrBDD) + 1 To UBound(arrBDD)
    dico(arrBDD(i, 1)) = arrBDD(i, 2)
Next i

'Report des sommes dans la feuille Données.
With shDonn
    For i = 1 To dico.Count
        .Cells(2, i + 3).Value = dico(CDbl(i))
    Next i
End With
End Sub

Ca devrait fonctionner.
 

Discussions similaires

Réponses
11
Affichages
286
Réponses
0
Affichages
148

Statistiques des forums

Discussions
312 196
Messages
2 086 087
Membres
103 116
dernier inscrit
kutobi87