Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tri par

SDR42

XLDnaute Junior
Bonjour,

Etant débutant sur VBA j'aurais besoin d'une aide. Voici mon problème
J'aimerais faire un tri pour chaque entrepôt connaitre la durée de location de chaque type par entrepot, sachant que j'ai des milliers de lignes. Je joint un exemple.

Merci
 

Pièces jointes

  • tri excel download.xls
    29 KB · Affichages: 40
  • tri excel download.xls
    29 KB · Affichages: 46
  • tri excel download.xls
    29 KB · Affichages: 45

R@chid

XLDnaute Barbatruc
Re : Tri par

Bonjour SDR42,
voir Pj si tu aimes faire avec les formules...
Amicalement
 

Pièces jointes

  • tri excel download.xls
    47 KB · Affichages: 49
  • tri excel download.xls
    47 KB · Affichages: 50
  • tri excel download.xls
    47 KB · Affichages: 50

david84

XLDnaute Barbatruc
Re : Tri par

Bonjour,
par VBA c'est bien entendu possible mais pourquoi ne pas tout simplement utiliser un tableau croisé dynamique ?
C'est un outil natif d'Excel qui fait très bien ce que tu veux obtenir.
A+
 

Pièces jointes

  • tri excel download (1).xls
    25.5 KB · Affichages: 40

SDR42

XLDnaute Junior
Re : Tri par

Bonsoir
La raison est que c'est la première trame d'un programme que je désire faire. Ces données seront ensuite inscrite dans un tableau par entrepôt. l'autre raison est que j'aimerais connaitre le VBA.

Merci
 

david84

XLDnaute Barbatruc
Re : Tri par

Re
Pour être franc un code opérationnel afin d'avancer sur mon projet. Et de l'étudier en même temps.
Ok. Ci-joint un code en principe fonctionnel : à toi de l'étudier de ton côté.
Code:
Sub Extraire()
Dim Pl As Range, Pl_Nom(), T, T2, dico, i As Long, j As Long, Nb As Double
Set Pl = Range("E1").CurrentRegion
Set Pl = Pl.Offset(1, 0).Resize(Pl.Rows.Count - 1, Pl.Columns.Count)
Range("L3:N" & Pl.Rows.Count).ClearContents
Pl_Nom = Range("H2:H" & Pl.Rows.Count + 1)
Set dico = CreateObject("scripting.dictionary")
For i = LBound(Pl_Nom) To UBound(Pl_Nom)
If Pl(i, 5) = [M1] Then dico(Pl_Nom(i, 1)) = dico(Pl_Nom(i, 1)) + 1
Next i
T = dico.keys
T2 = dico.items
[M3].Resize(dico.Count) = Application.Transpose(T)
[L3].Resize(dico.Count) = Application.Transpose(T2)
For i = LBound(T) To UBound(T)
For j = LBound(Pl_Nom) To UBound(Pl_Nom)
    If Pl_Nom(j, 1) = T(i) And Pl(j, 5) = [M1] Then Nb = Nb + Pl(j, 3)
Next j
Cells(i + 3, 14) = Nb: Nb = 0
Next i
End Sub
A+
 

Pièces jointes

  • tri excel download (2).xls
    44 KB · Affichages: 34

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…