Tri dans le même ordre qu'une liste donnée

Bonjour,

je voudrais trier des colonnes dans une feuille dans le même ordre que l'ordre présent dans une autre feuille.
Je ne vois pas du tout comment faire, je n'ai donc encore rien essayé.
Auriez-vous des pistes ?

J'ai dans un feuille une liste d'évènements triés par date. Dans une autre feuille chaque colonne correspond à un évènement. Je n'ai plus la date dans cette feuille.
J'aimerai trier les colonnes dans l'ordre dans lequel les évènements sont dans la feuille d'avant.

Je n'ai pas de code à donner ...

NB : la liste comme les colonnes sont dynamiques : j'en rajoute parfois, je ne peux donc pas taper l'ordre des colonnes, cet ordre doit venir de la feuil.

En vous remerciant !

Configuration: Windows / Firefox 67.0

8 réponses

  1. J'aurai voulu joindre un classeur avec ma situation simplifiée mais je n'ai pas l'impression que ce soit possible ...
    0
    1. Bonjour
      Pour joindre ton fichier tu vas sur ce site tu copies le lien qui te sera donné et tu viens
      le coller dans ta réponse
      https://www.cjoint.com/
      Cordialement
      0
    2. Merci !
      Fichier ici : https://www.cjoint.com/c/IFmiFcvIKTi
      Il s'agit d'un exemple simplifié de ma situation : je souhaite que mes colonnes dans la feuille 2 soient trier dans le même ordre que celui indiqué en ligne dans la feuille 1.
      Attention des évènements seront rajoutés : lignes dans la feuille 1 et colonnes dans la feuille 2 (je les ajoute en même temps par une petite procédure). Le tri doit donc pouvoir prendre en compte les nouveaux éléments éventuels.

      Merci beaucoup !
      0
  2. Re bonjour

    Si j'ai bien compris c'est ce que tu veux avoir
    https://www.cjoint.com/c/IFmjlID0gsk
    Question: combien de colonnes en feuil1
    combien de colonnes en feuil2
    Crdlt
    0
    1. Re,

      non ce n'est pas ça, en feuille 2 je veux que cela reste en colonne et non en ligne.
      Je veux que mes colonnes soient triées : Ev1 puis Ev2 pui Ev3 etc... Dans le même ordre qu'en feuille 1. (où c'est trié selon la date).

      Je ne peux pas me servir du nombre de colonnes : le fichier en rajoute.
      J'ai une macro qui me rajoute une ligne en feuille 1 et une colonne en feuille 2 qui portent le même nom.
      0
  3. un exemple avec macro et bouton
    https://www.cjoint.com/c/IFmlAI7wCUk
    0
    1. Merci beaucoup mais cela ne fonctionne pas : si j'ajoute un évènement en feuille 1 et en feuille 2 et appuie sur le bouton il ne trie pas, j'ai une erreur.
      0
    2. Il me semble que rien n'indique la feuille 1 dans votre code ...
      Je viens de créer un vecteur contenant les évènements dans l'ordre de la feuille 1 et j'essaie maintenant de trier la feuille 2 selon cet ordre...
      0
  4. La feuille 1 n'a rien a voir puisque le tri se fait en feuille2
    0
    1. Dans ce fichier j'ai mis en feuil2 colonne A de nouvelles données
      clique sur le bouton feuil 1 et tu verras qu' en feuil2 les nouvelles données sont à leurs places

      https://www.cjoint.com/c/IFmmFKtEYfk
      0
      1. Re bonjour,

        nous ne nous sommes pas compris : je souhaite utiliser l'ordre en feuille 1 pour trier la feuille 2.
        J'ai un peu avancé depuis : j'ai créer un vecteur qui stocke l'ordre des évènements (ce que je veux trier) de la feuille 1.
        Je recherche le moyen de trier la feuille 2 selon ce vecteur que j'ai appelé liste.

        J'ai donc un vecteur liste qui contient les en-tête de mes colonnes en feuille2 et je souhaite trier ces colonnes selon cet ordre.
        On peut le faire avec sort mais je ne m'en sort pas avec les paramètres de la fonction ....

        Ma page de données doit pouvoir s'agrandir donc je l'ai définit comme ceci :
        
        
        Dim maplage as Range
        Dim Dercol As Long
        Dim Dernlig As Long
        Dernlig = Range("A" & Rows.Count).End(xlUp).Row
        Dercol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
        maplage = Range(Cells(1, 1), Cells(Dernlig, Dercol))
        
        
        
        0
    2. Est-ce que tu peux envoyer une copie de ton fichier original avec 3ou4 lignes
      et tu mets des noms bidons aux endroits stratégiques.
      0
      1. Bonjour,

        merci beaucoup de vous être intéressé à mon problème, j'ai une solution qui fonctionne :


        'Tri des colonnes de toutes les feuilles selon l'ordre de ce vecteur
        Sheets("ONF_COFOR").Activate
        Application.ScreenUpdating = False
        For n = LBound(liste) To UBound(liste)
        Columns("AJ:AJ").Insert
        Next
        Dim Col As Integer
        Col = 36
        For n = LBound(liste) To UBound(liste)
        Set C = Rows(1).Find(liste(n), LookIn:=xlValues, lookat:=xlWhole)
        Columns(C.Column).Copy Destination:=Cells(1, Col)
        Col = Col + 1
        Next
        For n = 35 + (UBound(liste) + 1) * 2 To UBound(liste) + 37 Step -1
        Columns(n).Delete
        Next
        Application.ScreenUpdating = True


        NB : j'ai un +35 car les colonnes que je souhaite trier ne prennent pas toute la feuille concernée : il s'agit de la colonne 35 à l'avant dernière colonne.

        Cela me pose cependnat un problème car mes données sont sous forme de tableau et cette solution ne fonction pas avce un tableau, je suis donc onligée d'enlever ma mise en forme tableau.
        Or j'ai une autre procédure qui se sert des tableaux ... J'essaie de la modifier ;)
        0