Transfert de données entre deux feuilles Excel différentes

Bonjour a tous,

J’ai un fichier Excel nommé « AO.xlsx » dans lequel j’ai un tableau qui se remplit ligne par ligne automatiquement tous les jours via un flow power Automate.
J’aimerai, à chaque fois qu’une ligne est ajouté dans ce tableau, récupérer les valeurs des cellules et les coller automatiquement et systématiquement dans un autre tableau situé dans le fichier « AO international.xlsm ».

J’avais pensé utiliser « Worksheet_Change » mais le fichier « AO.xlsx » ne peut pas contenir de macro car Power Automate ne prend pas en compte .xlsm. Il faut donc que le code vba soit stocké sur le deuxième fichier « AO international.xlsm ».

De plus, les fichiers seront sur un SharePoint, je ne pense pas que cela change le code…

Pour résumer:

  • A chaque ajout d’une ligne de données d’un tableau d’un fichier "AO.xlsx ", récupérer les nouvelles données et les ajouter à la suite d’un autre tableau dans un fichier « AO international.xlsm »
  • Faire en sorte que les tableaux soient indépendants, le but est de pouvoir modifier le tableau du fichier « AO international » (garder seulement les lignes qui nous intéressent, ajouter des données…)

Quelqu’un pourrait-il m’aider, je bloque totalement…?

AO international.xlsm (21,3 Ko)

AO.xlsx (39,0 Ko)

Je mets ci-joint le fichier avec les tableaux correspondantes.

Merci d’avance pour votre aide

Bonjour

Ci-joint ma proposition

Les 2 fichiers doivent être ouverts

Fichier « AO international.xlsm » onglet « Sheet1 » cliques sur le bouton « Récupération » en cellule « M3 »

Testes et dis moi

AO international.xlsm (31,2 Ko)

1 « J'aime »

Bonjour à toi,

Merci pour ta réponse rapide. C’est exactement ca à un détail près.

Je veux pouvoir supprimer manuellement des lignes de mon tableau « AO international.xlsm » et faire en sorte que lorsque je relance la macro, elles ne s’ajoutent plus.
Faire en sorte que chaque ligne ne peut être ajouté une fois seulement en quelque sorte…

Est-ce possible d’après toi?

Encore merci

Bonjour
La réponse fût longue mais tout arrive à qui sait attendre
Il ne faut jamais désespérer
Il est toujours plus facile pour un contributeur de répondre aux différentes évolutions souhaitées si celles-ci ne sont pas trop espacées dans le temps entre elles car dans le cas contraire il faut se remettre dans le bain ce n’est pas simple afin d’intégrer tout le contexte du projet et les évolutions apportées pour répondre à une nouvelle demande de manière appropriée
Donc je te propose cette amélioration qui dans le traitement qui semble te convenir ajoute un marquage des lignes colonne A du fichier source « AO.xlsx » lorsque celles-ci sont prisent en compte
Ce marquage ce caractérise par la mise sur fond vert de ses cellules
Ainsi une fois chaque ligne basculée dans le fichier « AO international.xlsm » un nouveau passage de ce traitement ne traitera que les lignes qui n’ont pas dans la colonne A la mise sur fond vert
Il va de soit qu’après chaque exécution un enregistrement du fichier « AO.xlsx » doit être effectué pour garder cette information

Tu peut donc ainsi supprimer un enregistrement dans le fichier cible celui-ci ne sera pas réintégré tant que sa cellule colonne A dans le fichier source n’aura pas changé de couleur

Testes et dis moi

AO international.xlsm (30,2 Ko)

Merci pour ta réponse.
Je m’excuse du retard de ma réponse et comprends totalement, j’ai été débordé ces derniers jours.

Le soucis est que j’ouvre mon fichier « AO.xlsx » stocké sur un SharePoint via ce code vba:

sPath = "https://société.sharepoint.com/:x:/r/sites/..."
sFic = "AO.xlsx"
Set WbkAp = Workbooks.Open(sPath & sFic)

Et celui-ci s’ouvre mais en lecture seulement. La modification en vert se fait bien mais il ne se mettra pas à jour sur le SharePoint.

Y a-t-il un moyen de le faire sans modifier le fichier « AO.xlsx »?

Je pensais à enregistrer la position de la dernière ligne récupérée du fichier AO pour ensuite reprendre là ou on en était…

Merci à toi

Pour le retard aucun souci si ce n’est de bien garder en tête la difficulté engendré pour nous par une réponse tardive
Maintenant j’ai bien conscience que l’on ne fait pas toujours ce que l’on veut

« Je pensais à enregistrer la position de la dernière ligne récupérée du fichier AO pour ensuite reprendre là ou on en était… »

Certes c’est une solution si tant est que la source « AO.xlsx » reste stable quant à ces enregistrements
Et d’être certain que jusqu’à la ligne enregistrée les données ne soient pas modifiées chamboulées ou mélangées aux nouvelles

A toi de voir et me dire

Sinon utiliser un autre onglet du fichier cible « AO international.xlsm » pour archiver tous les enregistrements recopiés afin qu’ils ne soient pas réintégrer

A toi de décider la meilleure option et me dire

1 « J'aime »

Je pense que la seconde option que tu proposes est en effet meilleure:

« utiliser un autre onglet du fichier cible « AO international.xlsm » pour archiver tous les enregistrements recopiés afin qu’ils ne soient pas réintégrer »

Pourrais-tu l’implémenter dans le code s’il te plait?

Merci encore,

Ton fichier avec l’évolution souhaitée
Ajout d’un onglet « Archive » dans le fichier cible " AO international.xlsm"
Cet onglet archive uniquement en colonne A tous les « Nom du projet » recopié du fichier source " AO.xlsx"

Tous ceux présents dans cette colonne de cet onglet ne peuvent être réintégré dans l’onglet « Sheet1 » de ce même fichier
Un enregistrement de ce fichier devra être effectué après tout traitement

Testes et dis moi

AO international.xlsm (31,6 Ko)

1 « J'aime »

Bonjour,
C’est parfait!

Un grand merci à toi pour ton aide!
Bonne continuation.

Bonjour
Merci pour ton retour
Bonne utilisation et peut-être à bientôt
Au plaisir

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.