Macro qui ajoute une colonne de classement

Bonjour à tous,

Je bloque depuis quelques jours sur une macro que je n'arrive pas à finaliser. J'espère que vous pourrez m'apporter votre aide.

Alors voila j'ai une colonne de mon tableau qui contient ce genre de données :

BDD202.4

BDD202.15

BDD202.9

BDD202.7

BDD202.8

BDD202.6

BDD202

BDD203.0

BDD203.1

BDD203.10

BDD203

BDD204

BDD203.11

BDD203.2

J'aimerais que ma macro m'ajoute une colonne devant celle-ci avec un numéro qui corresponde au classement de ma colonne.

Avec mon exemple cela donnerait ceci :

02 BDD202.4

07 BDD202.15

06 BDD202.9

04 BDD202.7

05 BDD202.8

03 BDD202.6

01 BDD202

09 BDD203.0

10 BDD203.1

12 BDD203.10

08 BDD203

14 BDD204

13 BDD203.11

11 BDD203.2

Voici les données dans le bon ordre pour plus de clarté :

01 BDD202

02 BDD202.4

03 BDD202.6

04 BDD202.7

05 BDD202.8

06 BDD202.9

07 BDD202.15

08 BDD203

09 BDD203.0

10 BDD203.1

11 BDD203.2

12 BDD203.10

13 BDD203.11

14 BDD204

Pour infos :

  • Mes nombres sont toujours précédés de "BDD"
  • Le séparateur de mes nombres est toujours le point.
  • Les nombres avant le point peuvent être composé de 1 ou plusieurs chiffres.
  • Les nombres après le point (quand il y'en a un) sont composé uniquement de 1 ou 2 chiffres.

Pour la manière de classer je pense que c'est clair avec les exemples sinon demandez moi.

bonjour,

une proposition

Sub aargh()
Columns("A:B").Insert shift:=xlToRight
Columns("C:C").Copy Columns("B")
Columns("B").Replace "bdd", ""
Range("A1") = 1
Range("A2") = 2
Range("A1:A2").AutoFill Range("A1:A" & Cells(Rows.Count, 2).End(xlUp).Row), xlFillDefault
Columns("A:C").Sort key1:=Range("B1"), order1:=xlAscending, Header:=xlNo
Columns(2).Delete shift:=xlToLeft
Columns("A").Insert shift:=xlToRight
Range("A1") = 1
Range("A2") = 2
Range("A1:A2").AutoFill Range("A1:A" & Cells(Rows.Count, 2).End(xlUp).Row), xlFillDefault
Columns("A:C").Sort key1:=Range("B1"), order1:=xlAscending, Header:=xlNo
Columns(2).Delete shift:=xlToLeft
End Sub

Bonjour h2so4,

Merci pour ta proposition malheureusement celle-ci ne fonctionne pas car tu te bases sur la manière dont Excel fait son trier.

Du coup j'obtiens un classement de ce type :

01 BDD202

02 BDD202.15

03 BDD202.4

04 BDD202.6

05 BDD202.7

06 BDD202.8

07 BDD202.9

08 BDD203.0

09 BDD203

10 BDD203.1

11 BDD203.10

12 BDD203.11

13 BDD203.2

14 BDD204

Et justement ce n'est pas ce que je veux. Ça aurait été trop simple

Bonjour,

ton tri ne semble pas logique en tout cas...

celui d'excel est le bon

202.15 arrive avant 202.4 non ?

bizarre ce truc

Logique : mathématiquement parlant oui. Mais pas dans mon cas.

En fait les deux nombres séparés par le point sont deux infos différentes pour moi (ce n'est pas un nombre a virgule).

Par exemple dans BDD202.15 le 202 est une info et le 15 en est une autre.

Donc 202 4 arrive bien avant 202 15.

En gros c'est comme si il y'avait deux colonnes en une.

Et c'est bien parce que mon tri est un peu particulier que je n'arrive pas à le faire....

Bonjour,

nouvelle proposition

Sub aargh()
Columns("A:C").Insert Shift:=xlToRight
Columns("D:D").Copy Columns("B")
Columns("B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :=".", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Columns("B").Replace "bdd", ""
Columns("C").Replace "", "0"
Range("A1") = 1
Range("A2") = 2
Range("A1:A2").AutoFill Range("A1:A" & Cells(Rows.Count, 2).End(xlUp).Row), xlFillDefault
Columns("A:D").Sort key1:=Range("B1"), order1:=xlAscending, key2:=Range("C1"), order2:=xlAscending, Header:=xlNo
Columns("B:C").Delete Shift:=xlToLeft
Columns("A").Insert Shift:=xlToRight
Range("A1") = 1
Range("A2") = 2
Range("A1:A2").AutoFill Range("A1:A" & Cells(Rows.Count, 2).End(xlUp).Row), xlFillDefault
Columns("A:C").Sort key1:=Range("B1"), order1:=xlAscending, Header:=xlNo
Columns(2).Delete Shift:=xlToLeft
End Sub

Bien trouvé

C'est exactement ce qu'il me fallait!!!

Pas bête de passer par une colonne intermédiaire qui permet par la suite de remettre les choses dans l'ordre qui m'intéresse

J'aurais du y penser!!!

Merci beaucoup en tous cas

Rechercher des sujets similaires à "macro qui ajoute colonne classement"