Microsoft 365 copier coller en changeant la disposition et plage de donnees variable

cg1980

XLDnaute Occasionnel
Hello
une question a vous poser. J 'ai 2 fichiers (un fichier source et le fichier modele). La plage du fichier source peut varier d'une fois à l 'autre

Mon but est de prendre les donnees du fichier source et les copier dans le fichier modele mais la disposition change.

J ai mis des couleurs pour voir les correspondance de données. Dans le fichier source, les donnees sont sur une ligne et ensuite elles sont sur 2 lignes dans le fichier Modelle
Pour chaque numero de compte (ou ligne dans le fichier source, je devrais repeter ce copier coller).

Les donnees sont copier en valeur sans formule.
Si quelqu'un peut m'aider, je le remercie infiniment
Claudio
 

Pièces jointes

  • Modèle ordres 2.xlsx
    11.8 KB · Affichages: 4
  • source.xlsx
    11.4 KB · Affichages: 5

mromain

XLDnaute Barbatruc
Bonjour cg1980, le forum,

Une solution avec PowerQuery qui arrive à ce résultat :
Image1.png


Il faut juste adapter l'emplacement du fichier source.xlsx dans l'étape Source.
PowerQuery:
let
    Source = Excel.Workbook(File.Contents("C:\...\source.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    PremièresLignesSupprimées = Table.Skip(Sheet1_Sheet,2),
    FiltreNonNull = Table.SelectRows(PremièresLignesSupprimées, each ([Column1] <> null)),
    ColonneAjoutée_Records = Table.AddColumn(FiltreNonNull, "Records", each {[#"Account no."=_[Column1], #"Buy / Sell"=_[Column4], Currency=_[Column2], Amount=Number.Abs(Number.From(_[Column5])), Against=_[Column9], #"Value date / Maturity"=_[Column3]],
                                                                             [#"Account no."=null, #"Buy / Sell"=_[Column7], Currency=_[Column2], Amount=Number.Abs(Number.From(_[Column5])), Against=_[Column9], #"Value date / Maturity"=_[Column6]],
                                                                             [#"Account no."=null, #"Buy / Sell"=null, Currency=null, Amount=null, Against=null, #"Value date / Maturity"=null]}),
    AutresColonnesSupprimées = Table.SelectColumns(ColonneAjoutée_Records,{"Records"}),
    ListesDéveloppées_Records = Table.ExpandListColumn(AutresColonnesSupprimées, "Records"),
    ColonneDéveloppée_Records = Table.ExpandRecordColumn(ListesDéveloppées_Records, "Records", {"Account no.", "Buy / Sell", "Currency", "Amount", "Against", "Value date / Maturity"}, {"Account no.", "Buy / Sell", "Currency", "Amount", "Against", "Value date / Maturity"}),
    TypesModifiés = Table.TransformColumnTypes(ColonneDéveloppée_Records,{{"Value date / Maturity", type date}, {"Against", type text}, {"Amount", Currency.Type}, {"Currency", type text}, {"Buy / Sell", type text}, {"Account no.", type text}})
in
    TypesModifiés

A+
 

mromain

XLDnaute Barbatruc
Bonjour cg1980, Cousinhub, le forum,

Tout comme le dit Cousinhub, si tu es bien sur Office 365, tu as PowerQuery. C'est une fonctionnalité d'Excel.
Tu peux tester le fichier ci-joint.

A+
 

Pièces jointes

  • Exemple.xlsx
    18.5 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh