Tri de donnée VBA
A
Bonjour,
Je me tourne vers vous car j'aimerais effectuer un tri sur un tableau excel mais je n'y arrive pas.
J'ai 2 série de valeur en A et en C (dans l'ordre croissant) elles mêmes associées respectivement à B et D.
Je souhaiterais obtenir en H et en J un reconstitution des valeurs du tableau tel que si Ai=Cj alors les cellules vont sur la même ligne et si 2 valeurs ne correspondent pas alors cela s'affiche que dans la liste correspondante (le tout en ramenant B et D).
Je joins un fichier qui expliquera bien mieux que moi ce que je souhaite faire.
Merci d'avance!
bonjour,
une proposition
Sub aargh()
hv = 10000000000#
With Sheets("feuil1")
Dim r(1 To 10000, 1 To 4) 'max 10000 lignes résultats, adapter si nécessaire.
dl1 = .Cells(Rows.Count, 1).End(xlUp).Row - 2
dl2 = .Cells(Rows.Count, 3).End(xlUp).Row - 2
dl = Application.Max(dl1, dl2)
t = .Range("A4").Resize(dl, 4)
dl = UBound(t)
i1 = 1
i2 = 1
ctr = 0
val1 = t(i1, 1)
val2 = t(i2, 3)
Do Until val1 = val2 And val1 = hv
If val1 = val2 Then
ctr = ctr + 1
r(ctr, 1) = val1
r(ctr, 2) = t(i1, 2)
r(ctr, 3) = val2
r(ctr, 4) = t(i2, 4)
i1 = i1 + 1
i2 = i2 + 1
ElseIf val1 < val2 Then
ctr = ctr + 1
r(ctr, 1) = val1
r(ctr, 2) = t(i1, 2)
i1 = i1 + 1
Else
ctr = ctr + 1
r(ctr, 3) = val2
r(ctr, 4) = t(i2, 4)
i2 = i2 + 1
End If
val1 = t(i1, 1)
If val1 = "" Then val1 = hv
val2 = t(i2, 3)
If val2 = "" Then val2 = hv
Loop
.Range("H4").Resize(ctr, 4) = r
End With
End SubA
Merci acide sulfurique ;)
En effet ça marche très bien et je te remercie encore!
Bonne journée :)