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

VBA - Tri après concaténation de variable

TgR

XLDnaute Junior
Bonjour,

Je ne sais pas s'il est nécessaire de poster mon fichier pour ma question mais s'il s'avère que oui, faites le moi savoir.

J'aimerais comprendre pourquoi après concaténation d'une variable au sein d'une macro et affichage dans excel je ne peux pas effectuer de tri correct sur mes cellules.

Voici mon code qui concatène :

Code:
pourcentage = Round(((composantsCommuns / maxComposants) * 100), 0)
tabLruCommuns(indiceTab) = pourcentage & "%" & " " & tabLruCommuns(indiceTab)

Ce qui donne pour résultat des données de la sorte :

84% 45150320:F9111
8% 39275060:F9111
8% C16363AA:F9111
76% C16291AB:F9111
3% 860V1M1:F6306

Lorsque je tente ensuite d'appliquer un tri via excel le résultat donné est le suivant :

84% 45150320:F9111
8% C16363AA:F9111
8% 39275060:F9111

76% C16291AB:F9111
3% 860V1M1:F6306

Seules les deux cellules en gras ont changé de place. Le 76% sensé être après le 84% n'a pas bougé... j'ai essayé de changer le format de la cellule, d'enlever le "%" via excel (non pas dans la macro)... rien n'y fait.

Une idée?
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA - Tri après concaténation de variable

Bonjour tgr,

si j'ai compris, le tri se fait de Z--->A

le tri s'effectue correctement car le contenu des cellules est alphanumérique

à+
Philippe
 

pierrejean

XLDnaute Barbatruc
Re : VBA - Tri après concaténation de variable

Bonjour TgR

Salut Philippe

Salut l'agrafe

Vois si tu peux tu t'inspirer de ceci
 

Pièces jointes

  • TgR.xls
    40 KB · Affichages: 30
  • TgR.xls
    40 KB · Affichages: 35
  • TgR.xls
    40 KB · Affichages: 32

david84

XLDnaute Barbatruc
Re : VBA - Tri après concaténation de variable

Bonsoir,
on peut peut-être simplifier en utilisant Val :
Code:
Sub tri()
tablo = Range("tabLruCommuns")
For n = LBound(tablo, 1) To UBound(tablo, 1)
  For m = LBound(tablo, 1) To UBound(tablo, 1)
   x = Val(tablo(n, 1))
   y = Val(tablo(m, 1))
   If x > y Then
    temp = tablo(n, 1)
    tablo(n, 1) = tablo(m, 1)
    tablo(m, 1) = temp
   End If
  Next
Next
Range("B1").Resize(UBound(tablo, 1), 1) = tablo
End Sub
Après, il faut voir ce que cela donne en vitesse de traitement sur de grandes plages.
A+
 

Discussions similaires

Réponses
12
Affichages
689
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…