Joindre un fichier dans une feuille Excel

Signaler
Messages postés
9
Date d'inscription
samedi 22 août 2015
Statut
Membre
Dernière intervention
19 octobre 2015
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous,

Après plusieurs recherches, en vain, je ne parviens pas à créer ma macro.
Je dispose d'une feuille Excel sur laquelle mes collaborateurs saisissent des résultats à chaque fin de mois.
Ce même classeur est protégé afin que les utilisateurs ne puissent pas modifier le contenu.
Je souhaiterai qu'ils aient la possibilité de me joindre un fichier (Quel qu'il soit, photo, pdf, doc...), par l'intermédiaire de "Insertion\objet" via une macro.
Cela est-il possible? Je précise que je ne souhaite pas que la macro soit en liaison avec un envoi par mail, ce même classeur serait sauvegardé avec les pièces jointes.
Merci à vous de l'aide que vous pourrez m'apporter.

7 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
c'est évidemment possible (insertion ===>> objet comme tu le dis toi-même)
Et si tu veux le faire par code, il te suffit de lancer l'enregistreur de macro pour le voir, ce code à écrire ...
Messages postés
9
Date d'inscription
samedi 22 août 2015
Statut
Membre
Dernière intervention
19 octobre 2015

Bonjour ucfoutu,

J'ai bien essayé de le faire par l'enregistreur,sans succès, le code obtenu me permet uniquement d'ouvrir le fichier que j'ai sélectionné, or j'aurai voulu choisir le fichier à insérer.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
J'ai bien essayé de le faire par l'enregistreur,sans succès

Montre donc le code que tu as obtenu ...
Messages postés
9
Date d'inscription
samedi 22 août 2015
Statut
Membre
Dernière intervention
19 octobre 2015

Voici ce que cela donne avec l'enregistreur, je suis obligé de finaliser par un choix de fichier.

Sub objects()
'
' objects Macro
'

'
ActiveSheet.Unprotect
ActiveSheet.OLEObjects.Add(Filename:= _
"C:\Users\Perso\Documents\Mes sources de données\Essai.mdb", Link:=False, _
DisplayAsIcon:=False).Select
End Sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
je suis obligé de finaliser par un choix de fichier.

Bien évidemment. Mais si tel est ton problème, ta question aurait alors dû être non pas ce qu'elle a été (création d'on objet par insertion objet), mais :
comment choisir un fichier (quelle que soit la finalité du choix... en vue de l'insertion d'un objet ou en vue de n'importe quoi d'autre).

Et la réponse la plus adéquate dépend alors de nombreux aspects, en passant par la localisation, sur le disque dur, du fichier à sélectionner.

Ouvre alors une autre discussion (avec toutes les précisions possibles) relative à la SEULE (et rien d'autre) sélection d'un fichier.
Je refuse personnellement de traiter plusieurs aspects distincts dans une même discussion. C'est d'ailleurs, je te le rappelle, l'une des règles de ce forum.

Il t'appartiendra bien évidemment ensuite d'assembler comme tu le souhaites les différents blocs d'instructions (celui de la sélection d'un fichier, d'une part, et celui de son insertion dans un objet, d'autre part).
Merci_ de t'y conformer.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
9
Date d'inscription
samedi 22 août 2015
Statut
Membre
Dernière intervention
19 octobre 2015

Je vais de ce pas me conformer à tes recommandations, reformuler et reposter, tout en tenant compte de bien cibler mon problème.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bon ...
Regarde et comprends ce que fais ceci (exemple) , au lieu de tenter de mélanger tes deux discussions :
sur un classeur nouveau :
Sub ajout_ole_toto()
Dim mon_fic As String
supprime_ole_toto
mon_fic = "C:\Documents and Settings\user\Mes documents\Classeur1.txt" '===>> mets ici un chemin à toi ...
With ActiveSheet.OLEObjects.Add(Filename:= _
mon_fic, Link:=False, _
DisplayAsIcon:=False)
.Name = "toto"
End With
End Sub
Sub supprime_ole_toto()
On Error Resume Next
ActiveSheet.OLEObjects("toto").Delete
On Error GoTo 0
End Sub

Il n'est pas difficile de comprendre que dans cet exemple, la chaîne de caractères mon_fic est fixe
Il n'est pas non plus difficile de comprendre que toi, tu la choisis comme montré dans ton autre discussion ...
Si tu ne t'en sortais pas en dépit de tout cela, je préfèrerais t'abandonner car cela voudrait dire que tu ne sais pas non plus assembler deux petits bouts de code et que tu attends simplement du tout cuit.

EDIT : ce passage de ta demande :
...joindre un fichier (Quel qu'il soit, photo, pdf, doc...),

appelle par ailleurs la remarque suivante :
un objet OLE ainsi inséré restera totalement inefficace si le logiciel d'exploitation de cet objet est absent de la machine du destinataire.
L'ajout d'un objet OLE n'étant bien évidemment pas celui du logiciel nécessaire à son exploitation.




________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.