Bonjour le forum
Voilà mon soucis qui je suis sur, vous n'en ferez qu'une bouchée de pain
J'ai un tableau structuré, dans la première colonne se trouve des références ayant pour format UnNombre-UneLettre. Dans deux colonnes du tableau il y à des formules.
Je voudrais d'abord effectuer un tri par ordre croissant (par rapport à la partie numérique de la référence) et après faire un tri par ordre alphabétique (par rapport à la partie littérale de la référence)
J'ai déjà codé quelque chose mais lors ce que les lignes sont déplacées suite au tri je perd les formules ! Comme si je faisais un copier / collage spéciale en valeur !
Pourriez vous m'aider à modifier mon code pour pouvoir déplacer les lignes tout en gardant les formules ?
Par avance, merci de l’intérêt porté au sujet
Sub Tri()
Max = Feuil3.Range("A" & Rows.Count).End(xlUp).Row
'Pour trier les parties numérique des références
For i = 3 To Max
For j = i To Max
ComparA = Split(Feuil3.Cells(i, 1), "-")
ComparB = Split(Feuil3.Cells(j, 1), "-")
TempA = Feuil3.Range(Cells(i, 1), Cells(i, 8))
TempB = Feuil3.Range(Cells(j, 1), Cells(j, 8))
If CDbl(ComparA(0)) > CDbl(ComparB(0)) Then
Feuil3.Range(Cells(i, 1), Cells(i, 8)) = TempB
Feuil3.Range(Cells(j, 1), Cells(j, 8)) = TempA
End If
Next j
Next i
'Pour trier les parties litérale des référence
For i = 3 To Max
For j = i To Max
ComparA = Split(Feuil3.Cells(i, 1), "-")
ComparB = Split(Feuil3.Cells(j, 1), "-")
TempA = Feuil3.Range(Cells(i, 1), Cells(i, 8))
TempB = Feuil3.Range(Cells(j, 1), Cells(j, 8))
'Pour effectuer le tri il faut que les deux valeurs numérique des références consécutives testées soit égale
If UBound(ComparA) > 0 And UBound(ComparB) > 0 Then
If CDbl(ComparA(0)) = CDbl(ComparB(0)) And ComparA(1) > ComparB(1) Then
Feuil3.Range(Cells(i, 1), Cells(i, 8)) = TempB
Feuil3.Range(Cells(j, 1), Cells(j, 8)) = TempA
End If
End If
Next j
Next i
End Sub