Bouton "télécharger fichiers" à insérer la feuille excel

gerem

XLDnaute Nouveau
Bonjour,

J'ai déjà laissé un message sur ce forum mais peut-être ma question n'était-elle pas claire.

L'un de vous connaîtrait-il une macro me permettant de créer un bouton "télécharger". Il permettrait aux utilisateurs de télécharger leur(s) document(s) et que ceux-ci s'insèrent dans la feuille excel sous forme d'objet à un endroit choisi préalablement.

En fait, ce que je souhaite faire, c'est exactement le même principe la manipulation que je viens de faire pour joindre mon fichier dans ce message.

Idéalement ce bouton se situerait sur un userform mais si ce n'est pas possible, ce n'est pas grave.

Je nage complètement et ne trouve pas la solution.

Merci pour votre aide

gerem
 

Pièces jointes

  • telecharger fichiers.xls
    28.5 KB · Affichages: 172

gerem

XLDnaute Nouveau
Re : Bouton "télécharger fichiers" à insérer la feuille excel

Bonjour au forum,

je reviens vers vous suite à l'aide que SMOTTY m'a apporté concernant ma recherche. Je souhaitais avoir une macro qui me permette d'insérer un ou des fichiers sous forme d'icône dans le document excel ouvert (le fichier est bien intégré, ce n'est pas un lien)

Voici la macro que Smotty m'a proposé et qui fonctionne parfaitement:


Private Sub CommandButton1_Click()
Dim x As Integer

'**********************************************
'sélection possible de plusieurs fichiers
'**********************************************
che = Application.GetOpenFilename(, , , , True)
For x = 1 To UBound(che)
Call InsererFichier(che(x))
Next x
End Sub

Sub InsererFichier(ByVal Chemin As String)
Dim Fichier As String
Dim Obj As OLEObject
Dim n As Integer

'*******************************************
'détermine le nombre de fichiers sur la page
'*******************************************
n = ActiveSheet.OLEObjects.Count

'*******************************************
'détermine le nom du fichier
'*******************************************
tabc = Split(Chemin, "\")
Fichier = tabc(UBound(tabc))

'*******************************************
'insère le fichier
'*******************************************
Set Obj = ActiveSheet.OLEObjects.Add(Filename:=Chemin, Link:=False, DisplayAsIcon:=True, IconFileName:= _
"C:\WINDOWS\Installer\{AC76BA86-7AD7-1036-7B44-A70900000002}\PDFFile.ico", _
IconIndex:=0, IconLabel:= _
Fichier _
)

With Obj
'****************************************
'placement en fonction du nombre d'objets
'****************************************
.Top = Cells(n * 4, 1).Top
.Left = Cells(n * 4, 1).Left
End With
End Sub


Cependant, j'aimerais que les fichiers soient insérés dans une zone prédéfini de ma feuille de calcul par exemple au niveau de la cellule A1. Savez-vous si c'est possible?

Merci pour votre aide.

GEREM
 

smotty

XLDnaute Occasionnel
Re : Bouton "télécharger fichiers" à insérer la feuille excel

Bonjour Gerem,

comment vas-tu?

Modifie juste ce bout de code:

With Obj
'****************************************
'placement en fonction du nombre d'objets
'****************************************
if n=0 then
'**************************************************
'positionnement au niveau de la cellule A1 si pas encore de fichiers
'**************************************************
.Top = Cells(1, 1).Top
.Left = Cells(1, 1).Left
else
'**************************************************
'Si il y a des fichiers positionnement en fonction
'**************************************************
.Top = Cells(n * 4, 1).Top
.Left = Cells(n * 4, 1).Left
End With

A+
 

gerem

XLDnaute Nouveau
Re : Bouton "télécharger fichiers" à insérer la feuille excel

Bonjour Smotty,

ça va très bien, je te remercie. Et toi, toujours à travailler dans le train?

J'ai pratiquement fini mon fichier.

J'ai fait la modification que tu m'as apportée mais ça ne fonctionne pas. j'ai d'abord eu le message d'erreur à cause du end with, j'ai ajouté un end if et ça fonctionne maintenant mais le fichier inséré se met toujours au même niveau alors que je n'ai rien dans ma cellule A1.

Si tu as encore un peu de temps pour moi...

Merci
 

smotty

XLDnaute Occasionnel
Re : Bouton "télécharger fichiers" à insérer la feuille excel

Effectivement j'avais oublié le "end if"

remplace "if n=0" par "if n=1"

En fait tout dépend du nombre de boutons présents sur ta feuille quand il n'y a pas de fichiers chargés.

Sur le fichier que tu avais mis en lien, il y en avait 1. Je teste donc si le nombre d'objets est > au nombre d'objets à vide alors place le fichier en A1 sinon à la cellule suivante.

Si souci, tu peux tester seul quand rien n'est chargé:

sub test()
n = ActiveSheet.OLEObjects.Count
msgbox n
end sub

En espérant avoir été clair:confused:

A+

smotty
 

smotty

XLDnaute Occasionnel
Re : Bouton "télécharger fichiers" à insérer la feuille excel

re moi,

je viens de déjeuners j'ai donc les idées plus claires. Peut-être veux tu mettre les icones sur le même ligne?

Alors:

With Obj
'****************************************
'placement en fonction du nombre d'objets
'****************************************
.Top = Cells(1, 1).Top
.Left = Cells(1, n).Left
End With

le secret est là. soit tu modifie la ligne, soit la colone.;)

En espérant avoir bien compris

Bon courage

Smotty
 

gerem

XLDnaute Nouveau
Re : Bouton "télécharger fichiers" à insérer la feuille excel

Je n'ose imaginer la tête de tes collègues!!!
"Euh, à quoi tu penses? "
"A OLEObject"

;)

Je te remercie, ça marche très bien, j'avais effectivement plus besoin de les présenter en ligne qu'en colonne.

Si par un grand et heureux hazard, tu sais également comment faire pour que lorsqu'ils insèrent un ou plusieurs fichier j'ai la mention "oui" dans une cellule sur une autre feuille de ce même classeur, ce serait bienvenue, mais je ne veux pas abuser tu m'as déjà été d'une aide précieuse.

Je te remercie encore.

Gerem
 

smotty

XLDnaute Occasionnel
Re : Bouton "télécharger fichiers" à insérer la feuille excel

on n'est plus à ça près...:D

Vois à la fin de cette procédure:

Private Sub CommandButton1_Click()
Dim x As Integer

'**********************************************
'sélection possible de plusieurs fichiers
'**********************************************
che = Application.GetOpenFilename(, , , , True)
For x = 1 To UBound(che)
Call InsererFichier(che(x))
Next x

'********************************************
'il te reste à determiner dans quelle cellule...
'********************************************
if ubound(che)>0 then Worksheets("feuil2").range("A2").value="oui"

End Sub


A+
 
Dernière édition:

gerem

XLDnaute Nouveau
Re : Bouton "télécharger fichiers" à insérer la feuille excel

Bonjour Forum, Bonjour Smotty si tu es là.

Dans la formule que Smotty m'a gentillement donnée pour insérer un fichier dans un document excel sous forme d'objet, tout fonctionne.

Sauf que si la personne clique sur le bouton télécharger et finalement décide de ne rien télécharger et donc ferme la fenêtre de dialogue soit en cliquant sur la croix en haut à droite, soit en cliquant sur annuler, le message suivant apparaît:

Erreur d'execution 13
Incompatibilité de type

Avez-vous une idée de comment fermer sans avoir ce message?

Pour mémoire, voici le code:

Private Sub CommandButton1_Click()
Dim x As Integer

'**********************************************
'sélection possible de plusieurs fichiers
'**********************************************
che = Application.GetOpenFilename(, , , , True)
For x = 1 To UBound(che)
Call InsererFichier(che(x))
Next x
If UBound(che) > 0 Then Worksheets("SYNTHESE").Range("L15").Value = "OUI"

End Sub


Sub InsererFichier(ByVal Chemin As String)
Dim Fichier As String
Dim Obj As OLEObject
Dim n As Integer

'*******************************************
'détermine le nombre de fichiers sur la page
'*******************************************
n = ActiveSheet.OLEObjects.Count

'*******************************************
'détermine le nom du fichier
'*******************************************
tabc = Split(Chemin, "\")
Fichier = tabc(UBound(tabc))

'*******************************************
'insère le fichier
'*******************************************
Set Obj = ActiveSheet.OLEObjects.Add(Filename:=Chemin, Link:=False, DisplayAsIcon:=True, IconFileName:= _
"C:\WINDOWS\Installer\{AC76BA86-7AD7-1036-7B44-A70900000002}\PDFFile.ico", _
IconIndex:=0, IconLabel:= _
Fichier _
)

With Obj
'****************************************
'placement en fonction du nombre d'objets
'****************************************
.Top = Cells(16, 1).Top
.Left = Cells(16, n).Left
End With
End Sub

Merci pour votre aide

GEREM
 

smotty

XLDnaute Occasionnel
Re : Bouton "télécharger fichiers" à insérer la feuille excel

Salut Gerem!!

Je suis impardonnable... En fait j'ai fait exprès, on ne pouvait pas se quitter comme ça:D

Ajoute "on error resume next" comme ça:

Private Sub CommandButton1_Click()
Dim x As Integer

'**********************************************
'sélection possible de plusieurs fichiers
'**********************************************
che = Application.GetOpenFilename(, , , , True)

on error resume next:p
For x = 1 To UBound(che)
Call InsererFichier(che(x))
Next x

If UBound(che) > 0 Then Worksheets("SYNTHESE").Range("L15").Value = "OUI"

End Sub

Bon courage

smotty
 

hawk91

XLDnaute Nouveau
Re : Bouton "télécharger fichiers" à insérer la feuille excel

Bonsoir, je me permets de remonter ce code car il me convient à 80%, c'est à dire qu'en fait je souhaiterai que l'objet s'intégre en pièce jointe dans un email.
Comment pourrai je faire, merci
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado