Copier des données automatiquement

inventaireVBA.xlsm (31,9 Ko)
Bonjour à tous,
j’utilise un ERP qui me permets pas d’avoir les données dont j’ai besoin en une seul fois, je dois exporter 4 fichiers différents ou je récupère les colonnes dont j’ai besoin. j’avais fait une petite macro en faisant des copier coller dans le fichier origine mais je trouve ça long à force.
je souhaiterai automatisé des transferts de données de 4 fichiers en format « .TSV » (je ne peux vous les transférer car format non accepté) vers mon fichier ci-joint dans les colonnes adéquates.
le nom des fichiers TSV commence tous par « fnd_gfm_SERIE DE NUMERO »
Sachant que je ne prends que quelques colonnes sur chaque fichier.
sur un des fichiers je prend les colonnes suivantes :
« Article » (qu’il faut convertir en nombre de 13 chiffres) que je colle en C
« Quantité système » que je colle en E
« Ajustement : UdM » que je renomme « unité de conditionnement » que je colle en F
« Ajustement : Quantité » que je renomme « Ecart » que je colle en G
« Ajustement : Valeur » que je renomme « Valeur écart » que je colle en H, à mettre en valeur absolue (pas de s gne négatif)
Sur un autre des fichiers je prend la colonne :
« Emplacement » que je colle en A
Sur un autre des fichiers je prend la colonne :
« Numéro » que je colle en B
et sur le dernier fichier je prend la colonne :
« Lot » que je colle en D
mise en forme du final :
tout centré à l’horizontale et à la verticale
hauteur des lignes 20
somme auto en bas de la colonne H (Valeur écart)

Si on peut faire fermer les fichiers TSV une fois les données récupérées ça serait cool.

j’espère avoir été assez explicite.
A dispo pour plus de détail!

d’avance merci
belle journée

Ces TSV, ce sont une sorte de TXT ou CSV ou … ?
Alors renommez les extentions comme TXT ou CSV et mettez-les comme PJ.
Sans cela, c’est difficile à vous répondre

ceux sont des fichiers qui s’ouvrent sous excel comme les « csv ».
les voici :
fnd_gfm_19428001 (1).csv (1,4 Ko)
fnd_gfm_19428001 (2).csv (1,2 Ko)
fnd_gfm_19428001 (3).csv (1,7 Ko)
fnd_gfm_19428001 (4).csv (1,2 Ko)

Bonjour

Ci-joint ma proposition
Un onglet « Paramètres » créé dans lequel colonne « A » est intégré la liste des fichiers source
A mettre à jour au gré de leur fluctuation
Ces fichiers sont à mettre dans le même répertoire que celui de leur recopie ci-joint

Après avoir réalisé cette mise en place et mis à jour la colonne « A » de l’onglet « Paramètres » :

Onglet « Inventaire » cliques sur le bouton « Récupération »

Constates le résultat

Fais moi un retour

inventaireVBA.xlsm (51,8 Ko)

1 « J'aime »

Bonjour FFO,
Merci pour ton retour. c’est super et beaucoup moins contraignant.
cela fonctionne.

Parfait parfait
Ravi de ce resultat
Au plaisir une prochaine fois

1 « J'aime »

Re, j’ai un soucis. il me décale tout et il me zappe certaine ligne.
1.csv (2,0 Ko)
2.csv (3,3 Ko)
3.csv (2,4 Ko)
4.csv (2,4 Ko)
inventaireVBA.xlsm (44,8 Ko)
pourrais tu m’ajouter ces règles en même temps:
Columns(« H:H »).Select
Selection.NumberFormat = « #,##0.00 $ »
Columns(« C:C »).Select
Selection.NumberFormat = « 0000000000000 »
et aussi avant d’effacer le contenu de A2 jusqu’à la fin peux tu désactiver le filtre automatiquement et le réactiver à la fin au moment de la somme auto?

Comme tu peux constater je renomme mes fichiers 1 2 3 4 comme ça je ne le change pas dans paramètres et chaque export je nomme mes fichiers, avec le même nom, plus rapide et plus simple :wink:

Ci-joint ton fichier avec les évolutions souhaitées
Avec celle-ci :

« Columns(« H:H »).Select
Selection.NumberFormat = « #,##0.00 $ » »

La somme colonne « H » en fin des données reste à 0

Est-ce normal et souhaité ?

A toi de voir

Le fichier à tester

inventaireVBA.xlsm (45,0 Ko)

1 « J'aime »

bonjour,
Non effectivement ce n’est pas voulu, je voulais que cela transforme en nombre monétaire (€ que j’ai modifié) avec seulement 2 chiffres après la virgule et que cela fasse la somme à la fin. mais au pire on va remettre en nombre avec seulement 2 chiffres après la virgule et annulé la somme auto car même en le faisant moi même cela mets 0 en total.
par contre j’ai remarqué que ça ne prenais pas en comptes les doublons « Article » car à la fin il me manque les « Numéros » 251,347,357 et 390 alors qu’on les retrouves bien sur le fichier N°4.

Bonjour

« par contre j’ai remarqué que ça ne prenais pas en comptes les doublons « Article » car à la fin il me manque les « Numéros » 251,347,357 et 390 alors qu’on les retrouves bien sur le fichier N°4. »

C’est à dire si il y a doublon d’article comment traite t’on ceux-ci ?

j’ai besoin de toutes les lignes sinon cela fausse mes données. après l’article apparait sur chaque fichier et dans le même ordre donc on peut peut-être coller à chaque fois l’article et les autres colonnes à chaque fois.

Pas très bien compris que te manque t’il dans le resultat ?
Peux-tu me transmettre le fichier avec les données obtenues et ajouter à la mains les manquants au titre de quel fichier que tu surlignes en couleur afin de bien les cerner et de comprendre le pourquoi de ce rajout

Merci

En analysant le fichier 4 effectivement les articles sont en doublon donc c’est sur le deuxième que les valeurs sont récupérées
On peut pour éviter de dupliquer ceux-ci mettre dans chaque colonne des données récupérées les différentes valeurs séparées par une balise comme ceci :

pour l’article « 5305145376696 » champ « Numéro » mettre ainsi « 251/252 »

A toi de voir

avec de nouveau fichier, je te joins ce que j’avais fait et en parallèle le tien avec les écarts
après peut être partir du mien si c’est plus simple.
1.csv (4,8 Ko)
2.csv (6,6 Ko)
3.csv (3,9 Ko)
4.csv (4,5 Ko)
inventaireVBA.xlsm (47,1 Ko)
inventaire.xlsm (157,1 Ko)

Tu ne m’as pas répondu sur la présentation que j’ai proposée :

une seule ligne par article avec toutes les données dans leur colonne séparées par une balise si il y en a plusieurs

Merci de me dire

ça risque d’être compliqué à analyser. peux tu me montrer à quoi cela va ressembler?

Testes ce fichier
Touts les articles ont leur données récupérées des fichiers sur une ligne unique
Pour chacun d’eux une même donnée est cumulée dans la même colonne avec le séparateur « / »
Autant d’éléments cumulés avec ce séparateur autant de présence de l’article dans chaque fichier exemple :

article 5305145376696 donnée « unité de conditionnement » : « NB/NB/NB/NB/NB/NB »

cet article est présent en double exemplaire dans les fichiers « 1.tsv » « 2.tsv » « 3.tsv » soit 3 fois (3 fichiers) 2 fois (en double dans chaque fichier) avec la valeur « NB » pour cette même donnée « unité de conditionnement » soit 6 fois « NB »

Ainsi est traité la récupération des données de chaque articles

Le traitement réalise la somme des valeurs récupérées colonne « H » (« valeur Ecart ») qu’il reporte colonne « H » dernière cellule
Donc abandon de la formule

Testes et dis moi

inventaireVBA.xlsm (53,1 Ko)

c’est un peu trop brouillon et pour mes analyses ça va complexe.
Et si on part de mon fichier, peut on automatiser le copier-coller des 4 fichiers dans les onglets correspondant et après ma macro fait le reste?

Autant par fichier récupérer les données de chaque article sans vérifier leur présence dans la recopie déjà effectuée et d’accepter les doublons engendrés chaque ligne portant les données récupérées par article du fichier traité
Pour un article les données du premier fichier sur une ligne ce même article pour un autre fichier avec ou non les mêmes données sur une autre ligne
Autant de lignes que d’articles par fichier fois le nombre de fichiers pas d’autre choix sur chacune d’elle uniquement les données de son fichier et non celles du même articles des autres fichiers

A toi de dire

ca va etre brouillon,

tu pourrais pas copier chaque fichier dans mes onglets du genre en renommant le fichier quand je l’enregistre.
2.csv (6,6 Ko)
3.csv (3,9 Ko)
4.csv (4,5 Ko)
1.csv (4,8 Ko)
fichier lot va dans l’onglet lot
fichier emplacement dans l’onglet emplacement
ETC
c’est peut-être plus simple et ensuite ma petite macro fait le reste
qu’en penses tu?