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

louloubru Messages postés 14 Statut Membre -  
louloubru Messages postés 14 Statut Membre -
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. louloubru Messages postés 14 Statut Membre
     
    J'aurai voulu joindre un classeur avec ma situation simplifiée mais je n'ai pas l'impression que ce soit possible ...
    0
    1. JCB40 Messages postés 3058 Date d'inscription   Statut Membre Dernière intervention   479
       
      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. louloubru Messages postés 14 Statut Membre
       
      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. JCB40 Messages postés 3058 Date d'inscription   Statut Membre Dernière intervention   479
     
    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. louloubru Messages postés 14 Statut Membre
       
      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. JCB40 Messages postés 3058 Date d'inscription   Statut Membre Dernière intervention   479
     
    un exemple avec macro et bouton
    https://www.cjoint.com/c/IFmlAI7wCUk
    0
    1. louloubru Messages postés 14 Statut Membre
       
      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. louloubru Messages postés 14 Statut Membre
       
      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. JCB40 Messages postés 3058 Date d'inscription   Statut Membre Dernière intervention   479
     
    Quelle erreur tu as?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. JCB40 Messages postés 3058 Date d'inscription   Statut Membre Dernière intervention   479
     
    La feuille 1 n'a rien a voir puisque le tri se fait en feuille2
    0
  7. JCB40 Messages postés 3058 Date d'inscription   Statut Membre Dernière intervention   479
     
    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. louloubru Messages postés 14 Statut Membre
       
      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
  8. JCB40 Messages postés 3058 Date d'inscription   Statut Membre Dernière intervention   479
     
    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
  9. louloubru Messages postés 14 Statut Membre
     
    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