Réorganiser les lignes d'un tableau

  • Initiateur de la discussion Initiateur de la discussion pou pouille
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

pou pouille

Guest
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

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 ?
 
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 .
 
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

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
 
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
 
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

Re : Réorganiser les lignes d'un tableau

Exactement ce que je cherchais, encore dsl pour le manque de clarté, et un grand merci pour cette macro (je vais regarder et essayer de comprendre le fonctionnement).
Bonne soirée.
Pou Pouille
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
914
Réponses
8
Affichages
390
Réponses
4
Affichages
735
Retour