|
|
|
|
Bonjour,
je vous écris pour obtenir de l'aide sur excel 2003.
Voila je dois classer par ordre croissant dans un tableau des numeros du type lettres-chiffres-chiffres-chiffres
sachant que les lettres soit c 'est F soit c'est EU
merci de bien vouloir m'aider par avance.
Cordialment Pierre-olivier
Configuration: Windows XP Internet Explorer 7.0
Une solution..
Sub Trie3()
Dim i As Long, e As Long, y As Integer
Dim T
Sheets("Feuil1").Select
'Sépare d'abord tout..
e = Range("A1").SpecialCells(xlCellTypeLastCell).Row
For i = 1 To e
T = Split(Cells(i, 1), "-", -1)
For y = 0 To UBound(T)
Cells(i, y + 2) = T(y)
Next y
Next i
'trie la colonne des date.. suite... Suite
Range("A1:E" & e).Select
Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Key2:=Range("D1") _
, Order2:=xlAscending, Key3:=Range("E1"), Order3:=xlAscending, Header:= _
xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Peut éventuellement ajouter une commande pour effacer les colonne C,D,E A+ L'expérience instruit plus sûrement que le conseil. (André Gide) |
Bonjour
|
En faite j'ai un tableau avec les numeros en colonne A et ensuite j'ai des informations qui correspondent à ces numero sur les colonnes qui suivent. comment dire ça chaque ligne correspond à un numero et ces informations.
|
La voila rectifiée, elle déplace toute la ligne.
'supposons les données dans colonne A
'et les résultats intermédiaire dans les colonnes suivantes
''supposons les données dans colonne A
'F-1998-124-045 ou EU-2005-256-125 ou F-1995-156
Sub Trie3()
Dim i As Long, e As Long, y As Integer
Dim T
Sheets("Feuil1").Select
'Sépare d'abord tout..
e = Range("A1").SpecialCells(xlCellTypeLastCell).Row
For i = 1 To e
T = Split(Cells(i, 1), "-", -1)
For y = 0 To UBound(T)
Cells(i, y + 250) = T(y)
Next y
Next i
'trie la colonne des date.. suite... Suite
Range("A1:IS" & e).Select
Selection.Sort Key1:=Range("IQ1"), Order1:=xlAscending, Key2:=Range("IR1") _
, Order2:=xlAscending, Key3:=Range("IS1"), Order3:=xlAscending, Header:= _
xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Efface les données intermédiaires
Range("IP1:IS" & e).Select
Selection.ClearContents
Range("A1").Select
End Sub
En principe ce devrait être bon. A+ L'expérience instruit plus sûrement que le conseil. (André Gide) |
Répondre à P.O.
|
J'ai que 2 boutons qui apparaissent oui ou aide et dans aide rien de trés compréhensible pour moi DSL je suis nul en informatique le truc c'est que l'ancien fichier marche super bien sauf qu'il considére pas le reste de mes colonnes. Erreur indique que ça peut venir aussi bien du programme que de mon tableur est ce que tu penses que ça peut venir du fait que j'ai des cases fusionnées??? |
SALUT escuse moi de te déranger encore une fois mais je suis une vrai bréle je n'arrive pas à faire fonctionner le programme dans le cas ou les numeros sont à la colonne E et commence à partir de la ligne 13 et qu'il ne commence pas par une lettre mais directement par un chiffre ex: 2008-254-569, 96-257-596, 99-548-623 |
Sub Trie3()
Dim i As Long, e As Long, y As Integer
Dim T
Sheets("Feuil1").Select
'Sépare d'abord tout..
'Trouve la dernière cellule de la colonne A1, si Autre cellule changer par exemple Par E1
e = Range("A1").SpecialCells(xlCellTypeLastCell).Row
'Commence à la ligne 1 jusque la dernière cellule si ligne 13 remplacer 1 par 13
'(Cells(i, 1) >> i c'est la ligne et 1 c'est la colonne, si colonne E remplacer 1 par 5
For i = 1 To e
'Split tu sélectionne le mot et tu tape F1, ce serra plus explicite que ce que je pourrais te dire en quelques lignes.
'Mais en gros, T devient un tableau avec chaque donnée séparée, T(0)=F T(1).. La suite
T = Split(Cells(i, 1), "-", -1)
For y = 0 To UBound(T)
Cells(i, y + 250) = T(y)
Next y
Next i
'trie la colonne des data.. suite... Suite
Range("A1:IS" & e).Select 'ICI rien changer, c'est bon
'Trie avec les critères de la colonne IQ1, ensuite IR1, ensuite IS1
'si tu n'a plus de lettre F ou EU devant if faut tout reculer d'une colonne, soit IP1, IQ1, IR1
Selection.Sort Key1:=Range("IQ1"), Order1:=xlAscending, Key2:=Range("IR1") _
, Order2:=xlAscending, Key3:=Range("IS1"), Order3:=xlAscending, Header:= _
xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Efface les données intermédiaires
Range("IP1:IS" & e).Select
Selection.ClearContents
Range("A1").Select
End Sub
Poure savoir comment ca fonctionne, mettre le curseur dans la macro et taper F8, ensuite, chaque fois que tu tape F8 l'instruction suivante est calculée, pour connaitre la valeur qu'il y a dans une variable tu promène ta souris dessus tu arras une bulle avec ce qui est dedans. A+ L'expérience instruit plus sûrement que le conseil. (André Gide) |