VBA, un petit peu d'aide SVP
onra
-
onra -
onra -
Bonjour,
Je trevail sous VBA avec EXcel.
J'ai un code qui tri un taleau par ordre croissant. Ca marche très bien jusqu'à 9, mais 10 se classe avant.
Concrètement ca me donne ca:
Lot 10
Lot 11
Lot 12
Lot 8
Lot1
Lot1
Lot10
lot12
Lot2
Vous pouvez voir que j'ai un autre problème: selon que l'onsaisisse Lot1 ou Lot 1; c'est pas pareil. Cela parait assez logique, mais je ne sais pas comment résoudre le problème. Du style, quoi que saisisse l'utilisateur, on obtiendrait "Lot 1".
Voici mon de code:
Sub TriTab()
Dim nbligne As Integer
nbligne = Worksheets("Recap Marché").Cells.SpecialCells(xlCellTypeLastCell).Row
Range("A3:K" & nbligne).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers
End Sub
Merci d'avance....
Je trevail sous VBA avec EXcel.
J'ai un code qui tri un taleau par ordre croissant. Ca marche très bien jusqu'à 9, mais 10 se classe avant.
Concrètement ca me donne ca:
Lot 10
Lot 11
Lot 12
Lot 8
Lot1
Lot1
Lot10
lot12
Lot2
Vous pouvez voir que j'ai un autre problème: selon que l'onsaisisse Lot1 ou Lot 1; c'est pas pareil. Cela parait assez logique, mais je ne sais pas comment résoudre le problème. Du style, quoi que saisisse l'utilisateur, on obtiendrait "Lot 1".
Voici mon de code:
Sub TriTab()
Dim nbligne As Integer
nbligne = Worksheets("Recap Marché").Cells.SpecialCells(xlCellTypeLastCell).Row
Range("A3:K" & nbligne).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers
End Sub
Merci d'avance....
A voir également:
- VBA, un petit peu d'aide SVP
- Petit point vert snap ✓ - Forum Snapchat
- Petit 2 ✓ - Forum Windows
- Point vert sur Snapchat - Forum Snapchat
- Trier du plus petit au plus grand excel - Guide
- Comment imprimer une photo en petit ✓ - Forum Photo numérique
1 réponse
Bonjour.
Le problème, c'est que tu fais un tri sur des chaînes de caractères, pas sur des nombres.
La solution la plus simple, c'est de saisir dans ta colonne (on va dire que c'ets la colonne A) uniquement les nombres.
Ensuite, tu sélectionnes la colone A, et tu appliques un format :
Menu Format->Cellule
Dans l'onglet Nombres, Catégorie "Personnalisé"
Dans Type, tu tapes Lot #
=> Au niveau de l'affichage, tu auras bien "Lot 1", mais pour Excel, il gérera des nombres...
Le problème, c'est que tu fais un tri sur des chaînes de caractères, pas sur des nombres.
La solution la plus simple, c'est de saisir dans ta colonne (on va dire que c'ets la colonne A) uniquement les nombres.
Ensuite, tu sélectionnes la colone A, et tu appliques un format :
Menu Format->Cellule
Dans l'onglet Nombres, Catégorie "Personnalisé"
Dans Type, tu tapes Lot #
=> Au niveau de l'affichage, tu auras bien "Lot 1", mais pour Excel, il gérera des nombres...
merci pour ton coup de main.
Je crois que je vais pencher pour ta solution même si j'aurais préférer un code histoire que l'utilsateur puisse rentrer son lot sous n'importe quelle forme.
Bonne continuation
A plus