Trier les plages

Bonjour,

voilà j'aimerais remettre en ordre les plages par séries

je vous joins un tableau

la première feuille est en désordre

et la seconde est dans l'ordre désiré

d'avance merçi

Jacques

bonjour,

Sub Berjac()
     With Sheets("Désprdre").UsedRange

          With .Columns("F")
               .FormulaR1C1 = "=INDEX(C[-5],AGGREGATE(14,6,ROW(R1C1:RC[-5])/(LEFT(R1C1:RC1,1)=""R""),1)) & TEXT(ROW(),""000"")"
               .Value = .Value
          End With

          .Resize(, 6).Sort .Range("F1"), Header:=xlNo

          .Columns("F").ClearContents
     End With

End Sub

Bonjour,

un grand merçi

je vais tester cela

bonne journée

Jacques

Bonjour,

Ca fonctionne très bien sauf si il y a plus de colonnes par exemple le même tri mais de la Colonne A à La colonne Z

j'ai fait divers essais en changeant le code mais je n'y arrive pas

Bon dimanche à tous

Jacques

Bonjour,

Voilà, je vous joins un fichier plus réaliste

donc trier les plage

qui commencent par "R" pour Réunions et les lignes entières qui suivent

Donc trier les lignes complètes et remettre les réunions dans l'ordre R1,R2,R3, Etc...

merçi

Jacques

4tri-plages.xlsm (60.97 Ko)

bonjour, un nouveau essai

Sub Berjac()
     '*************************************************************************
     'cette macro fonctionne pour R0 jusqu'à R99 et pour les lignes de 1 à 9.999
     'on utilise la première colonne après vos données pour y mettre une formule, qu'on supprime après
     '*************************************************************************
     Dim iC
     With ActiveSheet.UsedRange     'plage de vos données
          iC = .Columns.Count + 1     'nombre de colonnes utilisées+1
          With .Columns(iC)     'première colonne non-utilisée
               .FormulaR1C1 = "=""R"" & TEXT(MID(INDEX(C1,AGGREGATE(14,6,ROW(R1C1:RC1)/(LEFT(R1C1:RC1,1)=""R""),1)),2,1),""00|"") & TEXT(ROW(),""0000"")"     'ajouter cette formule
               .Value = .Value     'remplacer la formule par sa valeur
          End With

          .Resize(, iC).Sort .Cells(1, iC), Header:=xlNo     'trier la plage avec ces valeurs

          .Columns(iC).ClearContents     'supprimer la colonne des formules
     End With

End Sub

bonjour et encore merçi de votre implication

je vais regarder cela et étudier le code pour essayer de comprendre son fonctionnement

merçi merçi merçi

Jacques

Re bonsoir,

Voilà j'ai essayé sur plusieus fichiers c'est impeccable sauf lorsque il y a plus de 10 réunions il me place la réunion 10, 11 , 12 etc après la réunion 1 et admettons qu'il y ait 15 réunions, il me place R1,R10,R11,R12,R13,R14,R15,et ensuite, R2,R3,R4,etc

sinon c'est super je n'ose pas toucher au code de peur de l'âbimer

bonne soirée

Jacques

re, c'est plus facile, normallement, on le veut comme je l'ai fait, mais voici votre macro

Sub Berjac()

     '*************************************************************************
     'cette macro fonctionne pour R0 jusqu'à R99 et pour les lignes de 1 à 9.999
     'on utilise la première colonne après vos données pour y mettre une formule, qu'on supprime après
     '*************************************************************************
     Dim iC
     With ActiveSheet.UsedRange     'plage de vos données
          iC = .Columns.Count + 1     'nombre de colonnes utilisées+1
          With .Columns(iC)     'première colonne non-utilisée
               .FormulaR1C1 = "=left(INDEX(C1,AGGREGATE(14,6,ROW(R1C1:RC1)/(LEFT(R1C1:RC1,1)=""R""),1)),3) & TEXT(ROW(),""  0000"")"     'ajouter cette formule
               .Value = .Value     'remplacer la formule par sa valeur
          End With

          .Resize(, iC).Sort .Cells(1, iC), Header:=xlNo     'trier la plage avec ces valeurs

          .Columns(iC).ClearContents     'supprimer la colonne des formules
     End With

End Sub

Bonsoir

encore un grand merçi pour la macro je vais essayer ça

bonne soirée

Jacques

Bonsoir,

voilà jusqu'à 9réunions tout fonctionne impeccable et à partir des réunions 10 et plus elles s'intercalent après la réunion 1 mais bon ce n'est pas très grave

encore un grand merçi

Jacques

sorry, j'avais des problèmes avec la traduction.

Sub Berjac()
       Dim iC
     With ActiveSheet.UsedRange     'plage de vos données
          iC = .Columns.Count + 1     'nombre de colonnes utilisées+1
          With .Columns(iC)     'première colonne non-utilisée
               .FormulaR1C1 = "=MID(INDEX(C1,AGGREGATE(14,6,ROW(R1C1:RC1)/(LEFT(R1C1:RC1,1)=""R""),1)),1,3) & TEXT(ROW(),""0000"")"     'ajouter cette formule
               .Value = .Value     'remplacer la formule par sa valeur
          End With

          .Resize(, iC).Sort .Cells(1, iC), Header:=xlNo     'trier la plage avec ces valeurs

          .Columns(iC).ClearContents     'supprimer la colonne des formules
     End With

End Sub

Décidément j'y arrive pas dès qu'il y a 10 réunions

je rejoins un fichier ou il y a plus de 10 réunions

désolé

j'ai essayé avec les macros que tu m'as fait mais jusqu'à 9 réunions ça fonctionne nickel et à partir de 10 réunions les réunions 10 et suivantes sont après la réunion 1

voilà je vous remerçie d'avance pour votre travail effectué

Jacques

10tri-plages.xlsm (61.25 Ko)

mes 2 versions

15tri-plages-1.xlsm (67.12 Ko)

Bonjour,

un grand merçi Bart pour ton implication

bonne journée

Jacques

Bonjour Bart,

un grand merçi

Ca fonctionne nickel

bonne journée à toi

et encore merçi

Jacques

Bonsoir,

Je tenais encore à remercier BsAlv pour m'avoir aidé

tout fonctionne super bien

Merçi

Jacques

Rechercher des sujets similaires à "trier plages"