Microsoft 365 transfère infos

ryosaeba4

XLDnaute Nouveau
Bonjour,
j'ai un problème que je souhaite vous exposer. Cela sembla facile certainement pour vous mais c'est très complexe pour moi.

J'ai 2 fichiers excel. La structure de ces fichiers (noms des colonnes) ne sont pas identiques. Dans le fichier "source", il y a des informations que j'essaie d'exporter dans le ficher 'destination'.

Ces informations sont des montants de salaires. Ils sont repris dans la colonne H. Chaque salaire correspond à un nom. Vous constaterez qu'il y plusieurs fois les mêmes nom. L'idée est de pouvoir transférer le salaire correspondant à la date la plus récente sur un fichier destination. Dans le fichier destination, le salaire doit être repris dans la colonne F (A01).

Ces 2 fichiers sont des exemples. Ils se peut que les données à transférer concernent plus de personnes (par exemple 100 ou plus). Je cherche à pouvoir automatiser cela via une macro (?) afin que je puisse effectuer ces transfères rapidement. L'idéal étant d'avoir une feuille excel avec 2 boutons, l'un pour charger le fichier source, l'autre pour charger le fichier destination et que ce fichier soit modifié. Pensez-vous que cela soit réalisable ? Pouvez-vous m'aider ?

Voici les 2 fichiers ainsi que le résultat espéré. D'avance merci.

Bien à vous.
 

Pièces jointes

  • fichier de destination.xls
    29 KB · Affichages: 18
  • fichier source.xls
    28 KB · Affichages: 14
  • résultat.xls
    29.5 KB · Affichages: 7

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @ryosaeba4 , le Forum,

Ouh la la , mais c'est totalement interdit, tu as mis en ligne les salaires de tout l'équipe de..................... Star Wars ! :D

Bon en partant du principe que ta Feuille source contient les salaires par Staff et ensuite par Date croissante, la boucle devrait toujours trouver le salaire le plus récent...

Sauve ce classeur VBA dans le même répertoire de test que des deux autres fichiers (Fermés !)

  • fichier source.xls
  • fichier de destination.xls
Et tiens nous au courant...

Bien à toi, à vous
@+Thierry

EDIT Je viens de voir ton post #3, Par TCD, sur classeurs fermés, ca va être compliqué..
 

Pièces jointes

  • XLD_ryosarba4_Info_Transfer_between_2_Workbook.xls
    41 KB · Affichages: 6

_Thierry

XLDnaute Barbatruc
Repose en paix
De Rien, et demain c'est le premier mai, spéciale édition 2020 !

1588275758728.png


Bonne soirée
@+Thierry
 

ryosaeba4

XLDnaute Nouveau
Bonjour,

Cela fonctionne mais uniquement avec les fichiers insérés sur le forum.
A l'origine les fichiers sont en CSV. Le fichier de la source est appelé 4013 et le fichier de destination 4014.

J'ai modifié la macro en ce sens mais problème :). Qu'avez-vous besoin comme informations pour corriger la macro ? D'avance merci et bonne fête du 1er mai.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @ryosaeba4 , le Forum

Un ".csv" n'est pas un WorkBook, même si Excel les ouvre facilement "comme" si c'était un classeur ! Ca ne reste qu'un simple fichier plat "Comma-Separated Values".


C'est vraiment dommage de ne pas en avoir parlé dès le début, car c'est quand même une différence fondamentale.

En plus j'ai purgé tous les folders de tests depuis hier soir après mes tests, bon je vais voir ce que je peux faire.

Bonne journée
@+Thierry
 

ryosaeba4

XLDnaute Nouveau
Bonjour,
Je suis vraiment désolé. Je vous prie de m'excuser. Je ne savais pas que le format avait une importance. Au départ, j'ai converti les fichiers CSV en XLS par ce que je n'arrivais pas à les uploaded sur le forum. D'avance je vous remercie. Si vous avez besoin de quoi que ce soit (fichiers,..) n'hésitez pas à revenir vers moi. Bien à vous.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Oui c'est totalement différent, mais bon, c'est aussi bien plus compliqué à gérer...

Voilà déjà une premiere partie, je lis les CSV, et les je le mets "face à face" dans la feuille Excel du programme...

Là je dois faire autre chose (même si on est le 1er mai, j'ai des clotures de fin de mois à faire en télétravail... Et j'en ai pour un moment...

Tu peux déjà voir pour "lire" tes deux :
  • FileNameSource = CheminSource & "4013.CSV"
  • FileNameCible = CheminCible & "4014.CSV"

Pour voir si celà fonctionne (il y a différents types de CSV (MS-DOS, Macintosh, Excel comma delimited)... J'ai créé mes csv le 3ième type pour tester;

@+Thierry
 

Pièces jointes

  • XLD_ryosarba4_Info_Transfer_between_2_CSV.xls
    49.5 KB · Affichages: 7

ryosaeba4

XLDnaute Nouveau
Merci pour votre travail. J'ai mis dans un même dossier les fichiers 4013 & 4014 ainsi que votre macro. Celle-ci lit parfaitement les 2 fichiers. Merci.

Je vous souhaite une bonne journée même si vous travaillez. Je suis dans la même situation :). N'hésitez pas à revenir vers moi si vous avez besoin d'infos. Bonne journée.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @ryosaeba4 , le Forum

Bon voilà une version plus aboutie, elle va faire ce que j'avais développé en pensant avoir à faire à des Classeurs Excel, mais donc maintenant avec des CSV.

Sur le Programme il y a trois onglets maintenant :
  1. Interface (avec le bouton)
  2. fichier source
  3. fichier de destination
Ne pas les enlever, ils servent de "transit" pour les CSV, et à la fin je recontruis le fichier et le nomme comme suit en horodatage :
  • 4014_Generated_20-05-01_20-54-03.CSV
Je laisse l'original 4014.csv en l'état, comme ça c'est sans rique. Idem pour le 4013.csv, je ne fais que le lire, je n'y touche pas.

Regarde avec une copie de tes fichiers 4013.csv et4014.csv dans un répertoire de test où tu auras sauvegardé ce classeur.

PS J'ai remarqué que le logiciel qui crée ces CSV laisse des espaces superflus en fin de string, je les supprime en les rendant "propres", j'espère que le nouveau fichier 4014 ainsi généré sera "assimilable" par la suite...

Bonne découverte et analyse....
Bien à toi, à tous
@+Thierry
 

Pièces jointes

  • XLD_ryosarba4_Info_Transfer_between_2_CSV_v01.xls
    57.5 KB · Affichages: 4

ryosaeba4

XLDnaute Nouveau
Bonjour, Merci pour ce travail qui vous a certainement pris beaucoup de temps.
Ce pendant, l'exécution de la macro s'arrête avec une erreur se rapportant au Case 5 : TabloSource(5, x - 1) = CDate(Trim(Contenu(i))).

il s'agit d'une erreur 13.

D'avance merci pour vos conseils.

Bien à vous.
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @ryosaeba4 , le Forum

Cette erreur 13 "Type mismatch" signifie que dans le 4013.csv en position 6 (ce qui se traduit par Case 5 car on est en "base Zéro") nous n'avons pas un format reconnu comme date.

Dans le CSV de test que j'ai sous la main (tiré de tes exemples Excel) ça donne ceci :

1588405163942.png


Il faudrait que tu regardes avec le Notepad (Bloc-Note) et pas dans Excel, click droit sur le fichier et "ouvrir avec...." comme ci dessus, ce que nous avons dans un "vrai" 4013.csv en lieu et place de ce que j'ai surligné en jaune.

Je suis par là pour le moment...
Bien à toi, à vous
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 965
Membres
103 069
dernier inscrit
jujulop