XL 2016 Coller plusieurs fichiers 'entiers' dans le presse papier

CL91220

XLDnaute Nouveau
Bonsoir,
A l aide d'une macro Excel 2016, je cherche à copier plusieurs fichiers dans le presse papier afin que l opérateur du programme puisse manuellement les coller dans un mail par un CTRL+V. Les fichiers en questions sont de tous types (PDF, Docx, msg, etc...). L objectif est que depuis une form Excel, je puisse copier des fichiers dans le presse papier comme je pourrai le faire manuellement depuis l explorateur Windows...
Merci par avance pour votre aide.
 

CL91220

XLDnaute Nouveau
Je me rends compte que ma dernière précision n apporte pas la clarté que j espérais.
La sélection par l opérateur des fichiers sur la form Excel , j en fais mon affaire. Ce que je ne sais pas faire, (info non trouvée malgré mes recherches), c est introduire dans le presse papier les informations permettant à l opérateur de coller dans un mail les fichiers initialement sélectionnés...
J espère que c est plus clair ainsi.
Bonne fin de soirée et bonnes fêtes à tous :)
 

CL91220

XLDnaute Nouveau
Bonjour PatrickToulon,

merci pour cette orientation. J'ai cherché et je suis arrivé aux résultats suivants:

A partir de ce code là:
Sub ClipAjout()
Dim Clipboard As MSForms.DataObject
Dim t As String
Set Clipboard = New MSForms.DataObject
Clipboard.SetText "C:\Users\CL145667\Desktop\Localisation.xlsx"
Clipboard.PutInClipboard
t = "C:\Users\CL145667\Desktop\Localisation.xlsx"
End Sub

Sub ClipObtient()
Dim Clipboard As MSForms.DataObject
Dim Phrase As String
Set Clipboard = New MSForms.DataObject
Clipboard.GetFromClipboard
Phrase = Clipboard.GetText
Range("A1") = Phrase
End Sub
En collant dans un mail, j'obtient la même chose qu'en procédant au collage dans une cellule d'un onglet excel, c'est à dire la chaine de caractère suivante: 'C:\Users\CL145667\Desktop\Localisation.xlsx'

Quand je veux coller dans l'explorateur windows (ce n'était pas ma question à l'origine), je n'ai pas la possibilité du tout de coller, comme si le presse papier était vide...
Il doit manquer quelque chose qui permet à windows de comprendre qu'il ne faut pas copier le texte, mais coller le fichier dont le chemin est défini par la chaine de caractère...
Il doit aussi y avoir l'influence de la distinction entre presse papier Windows et presse papier office...

Je continue de chercher encore dans cette direction. Si éventuellement tu as quelques éléments supplémentaires, ils seraient les bien venus 😉
 

CL91220

XLDnaute Nouveau
Merci beaucoup TooFatBoy!!

je me rends compte que je n'utilise pas le bon vocabulaire!! :confused:

C'est justement ce que je souhaite, permettre à l'utilisateur de mon programme de joindre des fichiers à un mail en passant par la fonction coller du presse papier.
De même, je souhaite permettre à un utilisateur de coller des fichiers dans l'application Explorateur Windows en passant par la fonction coller du presse papier. Mais pour permettre à l'utilisateur de mon programme de pouvoir faire cela, il faut que je formalise le contenu du presse papier en conséquence et là, je ne trouve toujours pas la solution... 😐
 

TooFatBoy

XLDnaute Barbatruc
Pour joindre un fichier à un mail, il n'est pas question d'utiliser le presse-papier.
Il faut donner le nom et le chemin du fichier dans les paramètres du mail.

Tu trouveras de nombreux exemples en faisant une recherche sur le forum. ;)

Un exemple parmi tant d'autres :
 
Dernière édition:

CL91220

XLDnaute Nouveau
Bonjour TooFatBoy,

Merci beaucoup pour cette réponse. je réalise effectivement qu'il y a de la diversité dans les méthodes pour joindre des fichiers à des mails via vba. Ta proposition sera appliquée avec plaisir si je ne réussie pas à placer dans le presse papier les infos permettant à l'utilisateur de l'outil de 'coller' les fichiers n'importe où (mail, bureau, explorateur windows)... En effet, utiliser le presse papier (de Windows je suppose) permet de répondre à toute cette diversité de cas qui pourrait être utile à l'utilisateur de l'outil. Je n'avais pas donné tous les exemples possibles justifiant la demande initiale, désolé ToofatBoy.

Si ma demande est trop compliquée, je peux éventuellement passer par une autre méthode du genre copier en vba les fichiers en question dans un répertoire dédié à la 'récupération de fichiers' et ouvrir ce répertoire en lançant l'application explorateur pour permettre à l'utilisateur d'en faire ce qu'il veut... Il suffirait que j'initialise le contenu du répertoire à chaque fois avant de l'utiliser à nouveau. C'est moins sympa, mais cela aurait le mérite de facilité l'utilisation des fichiers en question par l'utilisateur...

Je vais essayé de voir sur cette seconde voie si aucune solution 'simple' ou 'clef en main' ne se présente pour l'utilisation du copier/coller.

En tout cas encore merci!
 

TooFatBoy

XLDnaute Barbatruc
Le problème c'est que je ne comprends pas exactement ce que tu veux faire. Mais de toute façon, tu ne peux pas copier le contenu de plusieurs fichiers dans le presse-papier puisque quand tu fais le "Copier" ça écrase l'ancien contenu du presse-papier par le contenu que tu viens de "Copier".
 
Dernière édition:

CL91220

XLDnaute Nouveau
Merci bcp pour ta patience ToofFatBoy ! Je vois bien que je ne suis toujours pas clair... Désolé!

L outil que j ai créé est un gestionnaire d équipements utilisant uniquement des form en interface. Il assure les opérations en lien avec l inventaire, les fiches de vie et l édition des planning des tâches à faire. A terme, c est entre 200 et 300 équipements avec un peu d historique dans leur fiche de vie qui seront digérés par l outil. A chaque enregistrement dans une fiche de vie, l utilisateur peut associer des documents (certificat d étalonnage, constat de maintenance, etc...) ces documents sont 'rangés' dans des répertoires très divers. Du coup, une interface existe pour présenter tous les documents en lien avec un numéro de série spécifique choisi par l'utilisateur . Pour l instant, cette interface ne permet que la visualisation des fichiers. Mais les utilisateurs peuvent avoir à adresser par mail un ou plusieurs de ces documents ou simplement les placer sur une clef USB. Il faut donc permettre à l'utilisateur de manipuler les fichiers également. D où la volonté d utiliser le presse papier. Mais ma seconde option me semble pas mal séduisante. Je veux parler de celle abordée à la fin de mon dernier message. Du coup, surtout ne perd pas trop de temps à essayer de répondre à ma problématique. Si je suis bien sûr toujours très intéressé pour utiliser le presse papier pour y placer des fichiers, ma solution de secours est sympa et les premiers essais semblent concluants.👍
 

TooFatBoy

XLDnaute Barbatruc
Je comprends un peu mieux ce que tu veux faire.

En revanche, je ne comprends toujours pas cette obsession de vouloir absolument utiliser le presse-papier.
Ton interface permet de visualiser les fichiers, donc il doit être possible d'ajouter un bouton "Copier" qui mettrait le nom et le chemin des fichiers dans une liste ; liste qui pourrait être utilisée pour "Coller", soit dans un dossier, soit dans un mail.
Mais il faudrait tout gérer toi-même dans tes macros...

J'avoue que ça dépasse largement mes capacités.
 

Phil69970

XLDnaute Barbatruc
Bonjour @CL91220 et bienvenu sur XLD
Bonjour à tous

En passant quelques remarques :

1) Il y a manifestement un problème de compréhension dans la demande. o_O
Un peu comme si nous parlions en Français et toi en patois très localisé !!! 🤣et forcément le dialogue tourne en rond.
==> 11 messages et on comprend pas complètement ce que tu veux faire ou plutôt on devine légèrement ... 🤔mais on est encore dans le très vague.;)
Je tente une traduction tu veux envoyer un mail avec des fichiers joints au mail ?

2) Et si tu nous mettais un fichier de ce que tu as déjà fait en nous expliquant dans le fichier je veux faire ci ou ça dans tel ou tel condition etc....
Car pour l'instant c'est comme si tu demandais à un aveugle de peindre la Joconde dans le noir.
Ok si il est aveugle c'est pas très grave d'être dans le noir ! 😂😂😂
Mais pour l'observateur qui lui décrit la Joconde il fait comment ?😳

Bonne lecture et bonnes fêtes

@Phil69970
 

CL91220

XLDnaute Nouveau
Bonjour TooFatBoy, bonjour Phil69970,

Encore merci pour ta patience TooFatBoy!!!!! :)

Phil69970, merci de t'intéresser à cette demande très mal formulée j'en conviens!! :(
Cela aura le 'mérite' de me faire entrée d'emblée dans le book des records d'XLD sur l'incapacité à se faire comprendre sur une problématique pourtant probablement simple...:oops:🤣

TooFatBoy, j'ai clairement évoluer sur la méthode à appliquer pour résoudre mon problème. Je vais contourner l'utilisation du presse papier.
Néanmoins, je suis toujours intéressé pour connaitre la méthode en vba permettant de 'copier' dans le presse papier des fichiers pour permettre à l'utilisateur des les coller où il le souhaite (mail, clef usb, bureau windows, etc...). Je comprends bien que ce qu'on appelle copier des fichiers dans le presse papier en vba correspond en fait (sans doute) à définir le chemin de fichiers concernés quelque part dans windows... Je dispose de ces chemins, mais je ne sais pas comment faire pour les intégrer au presse papier...

Phil69970, voici l'interface proposée à l'utilisateur:
1672149695757.png

L'utilisateur sélectionne dans la liste en haut l'équipement considéré identifié par la dénomination, son type et son numéro de série.
  • Automatiquement s'actualise la listebox de gauche listant tous les documents associés aux équipements du même type.
  • Automatiquement s'actualise la ListeView de droite listant tous les documents associés à l'équipement sélectionné avec queqlues informations complémentaires.
Cette interface permet à l'utilisateur d'ajouter ou supprimer des fichiers dans la listebox de gauche, mais surtout de permettre l'ouverture de n'importe quel des fichiers listés dans ces deux listes.

Mais l'utilisateur peut souhaiter aller plus loin en manipulant une copie de ces fichiers pour les placer sur une clef USB, dans un mail (pièce jointe) ou bien sur son bureau windows de manière à y accéder dans un second temps...
Pour répondre à ce besoin, je trouve particulièrement élégant de permettre à l'utilisateur, une fois qu'il a procédé à la sélection des fichiers concernés, de les placer où il le souhaite en faisant un simple collage depuis le presse papier. Dans ce but, je pensais ajouter un bonton 'Copier' sur cette page. Il me semble assez évident maintenant que le presse papier à utiliser n'est pas celui d'Excel, mais bien celui e Windows....
Je dispose des chemins complets des fichiers sélectionnés par l'utilisateur, mais je ne sais pas comment en vba, à partir de ces chemins, faire en sorte que les fichiers sélectionnés soient 'copier' dans le presse papier de Windows. En fait, j'aimerai faire en vba ce que nous faisons simplement dans l'explorateur en faisiant 'clic droit/copier' sur une sélection de fichiers...

Pas grave si pas de solution apportée, je peux me débrouiller autrement, de façon moins élégantes, mais qui fonctionnera sans pb. Je pense à copiers les fichiers sélectionnés dans un répertoire dédiés à la mise à disposition de fichiers sélectionnés par les utilisateurs, et ouvrir l'explorateur windows avec ce répertoire en argument de manière à ce que les fichiers en question soient disponibles à l'utilisateur pour qu'il fasse manuellement le copier/coller pour les placer où il le souhaite.

Voilà, encore merci pour votre aide. Je ne vous solliciterai pas davantage.; Si vous avez la solution, c 'est super!!, sinon, je me débrouillerai autrement.
Encore merci!!!
 

Pièces jointes

  • 1672147979165.png
    1672147979165.png
    105.4 KB · Affichages: 11

TooFatBoy

XLDnaute Barbatruc
Je comprends bien que ce qu'on appelle copier des fichiers dans le presse papier en vba correspond en fait (sans doute) à définir le chemin de fichiers concernés quelque part dans windows... Je dispose de ces chemins, mais je ne sais pas comment faire pour les intégrer au presse papier...
Si le chemin et le nom d'un fichier sont inscrits dans, par exemple, la celluleA1, alors un simple Range("A1").copy doit remplir le presse-papier je pense (à vérifier).


voici l'interface proposée à l'utilisateur
Ca correspond à ce que je disais : il y a un bouton "Visualiser", donc il te suffirait peut-être, comme je disais plus haut, d'ajouter un bouton "Copier", ou un bouton "Copier dans un dossier" et un bouton "Joindre à un e-mail".
 

Discussions similaires