Réorganiser les lignes d'un tableau

pou pouille

XLDnaute Nouveau
bonjour,
je souhaite comme le titre l'indique réorganiser les lignes d'un tableau.
ce que je souhaite c'est d'avoir toutes les lignes en premier dont la colonne en C commence par un 0.
ensuite, toutes les lignes dont la colonne en C varie de 1à24 et que la dernière lettre de la cellule n'est ni un B ,ni un C.
ensuite toutes les lignes dont la colonne en C varie de 1à24 et que la dernière lettre de la cellule en G est un B.
ensuite toutes les lignes dont la colonne en C varie de 1à24 et que la dernière lettre de la cellule en G est un C.
et pour finir toutes les lignes dont la colonne C varie de 10000 à 29900.

j'ai écrit un code qui "devrait" effectuer ce tri à l'envers mais cela ne fonctionne pas.
je poste mon code de tri:
Code:
lignes = Application.WorksheetFunction.CountA(Range("C1:C65536")) - 1
For D = 29900 To 10000 Step -100
    If Range("C" & lignes).Value = D Then
        Rows(1).Insert shift:=xlUp
        Rows(1).Value = Rows(B + 1).Value
        Rows(B + 1).Delete shift:=xlUp
    Else: lignes = lignes - 1
    End If
Next D
lignes = Application.WorksheetFunction.CountA(Range("C1:C65536")) - 1
For B = lignes To 1 Step -1
    If Range("C" & lignes).Value = 0 Then
        Rows(1).Insert shift:=xlUp
        Rows(1).Value = Rows(B + 1).Value
        Rows(B + 1).Delete shift:=xlUp
    Else: lignes = lignes - 1
    End If
Next B
lignes = Application.WorksheetFunction.CountA(Range("C1:C65536")) - 1
'première case
For X = 24 To 1 Step -1
For C = lignes To 1 Step -1
    If Range("C" & lignes).Value = X And Not Right(Range("G" & lignes), 1) = "B" And Not Right(Range("G" & lignes), 1) = "C" Then
        Rows(1).Insert shift:=xlUp
        Rows(1).Value = Rows(C).Value
        Rows(C).Delete shift:=xlUp
    Else: lignes = lignes - 1
    End If
Next C
Next X
lignes = Application.WorksheetFunction.CountA(Range("C1:C65536")) - 1
'deuxième case
For X = 24 To 1 Step -1
For C = lignes To 1 Step -1
    If Range("C" & lignes).Value = X And Right(Range("G" & lignes), 1) = "B" Then
        Rows(1).Insert shift:=xlUp
        Rows(1).Value = Rows(C).Value
        Rows(C).Delete shift:=xlUp
    Else: lignes = lignes - 1
    End If
Next C
Next X
lignes = Application.WorksheetFunction.CountA(Range("C1:C65536")) - 1
'troisième case
For X = 24 To 1 Step -1
For C = lignes To 1 Step -1
    If Range("C" & lignes).Value = X And Right(Range("G" & lignes), 1) = "C" Then
        Rows(1).Insert shift:=xlUp
        Rows(1).Value = Rows(C).Value
        Rows(C).Delete shift:=xlUp
    Else: lignes = lignes - 1
    End If
Next C
Next X
et en pièce jointe le fichier à traiter ainsi que le fichier excel avec sa macro.

Merci à ceux qui étudiron ce que j'ai écrit.
Pou Pouille
 

Pièces jointes

  • Tri_des_boites.xls
    40 KB · Affichages: 53
  • 47112381_face_B_test.zip
    3.3 KB · Affichages: 30

pierrejean

XLDnaute Barbatruc
Re : Réorganiser les lignes d'un tableau

bonjour Pou Pouille

J'ai ouvert dans Tri des boites le fichier .SMD (en le rebaptisant en .txt) avec les options delimité tabulation et virgule
En colonne C j'ai bien des 0 des chiffres de 1 a 24 mais jamais de terminaison en B ou C
questions:
1) mon debut de procedure est-il correct ?
2) le fichier SMD est-il un exemple complet ou incomplet ?
 

pou pouille

XLDnaute Nouveau
Re : Réorganiser les lignes d'un tableau

bonjour pierrejean,
oui la procédure est la bonne (les paramètres sont repris dans la macro du fichier excel en pièce jointe du premier post).
les indices B et C sont en colonne G : exemple C101 B
C15, C37 C...
j'ai déja vu que de toute facon ce que j'avai écrit ne fonctionnais pas du tout :O
- le fichier .SMD est complet. ( dans ma macro je supprime aussi les 4 ou 5 dernières lignes qui sont inutiles).
Merci déja d'avoir jeté un oeil .
 

pou pouille

XLDnaute Nouveau
Re : Réorganiser les lignes d'un tableau

Re bonjour,
c'est un très bon début mais j'ai le regret de dire que cela ne convien pas tout a fait :(
j'ai sans doute entrainné cette erreur lorse de l'explication de mon code, puisque je fait un tri à l'envers.
or au final ce que je souhaiterai c'est d'avoir les boites dans l'ordre croissant:
le 0 en premier ( ca c'est OK ^^)
ensuite les boites 1 à 24 sans indices en col G (il tri bien le faite qu'il n'y ai pas d'indice mais les boites sont dans l'ordre plus ou moins décroissant :s)
de meme pour les boites 1 à 24 indice B , puis indice C ( les indices sont OK meme problème pour l'ordre +- décroissant)
et les boites à 5 chiffres 10100 à 29900 sont aussi en ordre +- décroissant.
je joins le fichier résultat du tri, et l'ordre des boites que j'aimerais obtenir.
 

Pièces jointes

  • 47112381_face_B_test.xls
    46.5 KB · Affichages: 89

pierrejean

XLDnaute Barbatruc
Re : Réorganiser les lignes d'un tableau

Re

Cela n'etait pas evident au depart et cela n'est pas beaucoup plus maintenant !!!
que sont les boites ?
A 1ere vue (et même a seconde) je ne repere aucun tri dans aucune des classes principales enumérées dans le post d'origine
 

pierrejean

XLDnaute Barbatruc
Re : Réorganiser les lignes d'un tableau

Re

Ce n'etait pas evident au depart et ce ne l'est plus guere maintenant
Que sont les boites ? ???
A 1ere vue (et même a seconde) je ne repere aucun mode de classement dans aucune des classes enumérées dans le post d'origine
Donc et tout simplement donne la colonne (voire les colonnes) qui doivent etre prises en consideration pour le classement
 

pou pouille

XLDnaute Nouveau
Re : Réorganiser les lignes d'un tableau

re,
les "boites" sont la colonne C.
l'ordre des lignes du tableau sont à ordonner dans cette ordre :
premier: toutes les lignes ou la colonne C = 0
deuxième : Toutes les lignes par ordre croissant de colonne C et dernier caractère colonne G <> B ou C
troisième : toutes les lignes par ordre croissant de colonne C et dernier caractère de colonne G = B
quatrième: toutes les lignes par ordre croissant de colonne C et dernier caractère de colonne G = C
cinquième : toutes les lignes par ordre croissant de colonne C (ces valeurs sont comprises entre 10100 et 29900).

L'étape 1 est bien prise en compte.
L'étape 2 est bien prise en compte du point de vue : pas de B ou C dans colonne G, mais l'ordre des lignes suivant la colonne C n'est pas exacte. (j'ai essayé de metre l'ordre des boites tel qu'il devrai apparaitre à coté du résultat (colonneB)).
idem pour les étapes 3,4et 5,

j'ai mis des couleur pour montrer ques les valeurs n'était pas en ordre mais elles sont regroupées suivant le fait de l'indice B ou C ou vide en colonne G

j'espère que cela sera un peut plue clair, je joins le ficier obtenu à l'aide de la macro et celui auquel j'aimerais aboutir .
Merci
Pou Pouille
 

Pièces jointes

  • 47112381_face_B_BON.xls
    46 KB · Affichages: 72
  • 47112381_face_B_FAUX.xls
    36.5 KB · Affichages: 82

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 040
Membres
104 010
dernier inscrit
Freba