Trier une liste dans le même ordre qu'une autre liste

Bonjour à tous,

Au travail nous avons en test un nouveau fichier excel qui nous permet de ne plus saisir à la main une feuille d'émargement (je travaille dans le transport) qui est dans un ordre défini dans notre logiciel SAP ( logiciel spécifique à la logistique).

Nous recevons tous les jours d'un service sous 2 fichier un fichier excel avec les numéros de voyages dans le bon ordre et un fichier csv avec toutes les données nécessaires mais malheureusement celles-ci sont dans le mauvais ordre.

Je ne peux vous partager le fichier par souci de secret professionnel. Il contient du vba, il y a une feuille où l'on colle les données du CSV et une qui retransmet les données sous forme de tableau avec des lignes (numéro de voyages, destination du voyage, numéro de quai, date signature, ect....).

J'aimerais savoir si vous pouviez m'aiguiller sur comment retrier les lignes entière grâce à leurs numéros de voyages à l'aide de l'ordre du fichier XML où ils sont dans le bon ordre.

merci a vous d'avoir pris le temps de me lire.

en espérant avoir été assez explicite.

zarro

Voici le code VBA.

Sub Split()
'
' Split Macro
'
    'Select area
    Columns("D:D").Select

    'Unprotect sheet
    ActiveSheet.Unprotect Password:="xxxx"

    'Text to columns
    Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1)), _
        TrailingMinusNumbers:=True

    'Sort on duration

          Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add2 Key:= _
        Range("C2:C10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
    ActiveSheet.Sort.SortFields.Add2 Key:= _
        Range("L2:L10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("A1:N10000")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    Set range_to_unprotect = ActiveSheet.Range("D1:P1048567")
        range_to_unprotect.Locked = False

   'Protect sheet
   ActiveSheet.Protect Password:="xxxx"
data

Je copie l'intégralité du fichier csv dans cette page puis j'appuie sur le bouton Refresh qui je pense déroul ele programme vba "Split"

tableau

cela me génère un tableau mais qui n'est pas dans l'ordre que je voudrais (l'ordre voulut est en jaune)

Serait-t-il possible de mettre l'ordre voulut dans la colonne "o" ou "p" de la première image et générer un code qui reclasse le tableau dans l'ordre de cette liste

voici l'ordre que j'ai besoin

ordre data

Bonjour Zarro et

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
qui vous aideront dans vos demandes et réponses sur ce forum.

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)

Merci pour votre participation

Concernant votre demande, outre le fait que je ne vois pas comment cela est faisable,
quel est le but de vouloir faire ce que vous demandez ?

Bonjour Bruno,

Mon entreprise travail avec différents prestataires sur le site. Cette feuille est pour les prestataire de transports qui en ont chacun une et il peut y avoir jusqu'à 20 voyage par feuille.Nous leurs transmettrons les numéros de quai que nous retrouvons sur un logiciel qui sont attribuées par le prestataire de logistique. Donc pour plus de rapidité dans l'ordre cela évite certaines erreurs et les prestataires de transport peuvent comparer entre eux si ils n'ont pas les mêmes quais et dans quel ordre car il n'ont pas accès au logiciel commun entre nous et notre prestataire de logistique.

Bonjour Zarro,
Salut Bruno,

Je n'ai peut-être rien compris, mais si tu disposes de "un fichier excel avec les numéros de voyages dans le bon ordre ", tu pourrais (en colonne O ou P de ton csv), utiliser la fonction EQUIV. Celle-ci donnerait la position du n° de voyage dans le doc issu de SAP et cette position permettrait de faire un tri, il me semble ?
Brève illustration dans le fichier joint.

12equiv-zarro.xlsx (11.99 Ko)

merci U.milité,

du coup j'ai enregistré une macro qui fait le trie que j'ai assigné à un bouton.

bon weekend

Rechercher des sujets similaires à "trier liste meme ordre"