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

smotty

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

Bonjour à tous,

Si j'ai bien compris, voici un code qui permets de lister les fichiers présents dans un répertoire précis et de les mettre dans un tableau. En suite il reste plusqu'à mettre les infos du tableau dans un listbox ou dans les cellules.

sub Charger()
Dim TabListeFichiers() As String
Dim i As Integer
dim Chemin as string

Chemin = ActiveWorkbook.Path & "/FICHIERS/"

ReDim TabListeFichiers(50)

'chargement des noms de fichier
i = 0
S = Dir(Chemin)
Do
'chargement complet du chemin du fichier dans le tableau
TabListeFichiers(i) = Chemin2 & S
i = i + 1

If S <> "" Then S = Dir
Loop While S <> ""

listbox1.list()=tablistefichiers
end sub

C'est un exemple de ce qu'on peut faire, si question n'hésite pas

A+

smotty
 

gerem

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

Bonjour Smotty,

Merci, c'est très gentil à toi de prendre le temps de m'aider. Je ne suis qu'une débutante en vba, j'ai donc copié collé ton instruction mais ça bloque sur la liste. Que dois-je faire? Je te met le fichier en pièce jointe. Merci encore

Gerem
 

Pièces jointes

  • telecharger fichiers2.xls
    30 KB · Affichages: 113
  • telecharger fichiers2.xls
    30 KB · Affichages: 117
  • telecharger fichiers2.xls
    30 KB · Affichages: 118
Dernière édition:

smotty

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

Comme je ne peux pas compresser le fichier sur mon poste et avec le code il est trop lourd, je te fais parvenir le code complet ci:dessous

Mais il doit être adapté concernant l'endroit où sont les répertoires.

J'ai fait mon maximum. Ensuite il faut un minimum de connaissance en vba sinon tu sera forcément coincé à un moment où à un autre.



Private Sub CommandButton1_Click()
Dim ctr As Control
Dim rep As String

rep = ""
For Each ctr In Me.Controls

'*********************************************
'je ballaie tous les controls pour savoir lequel est sélectionné
'*********************************************
If TypeName(ctr) = "CheckBox" Then
If ctr.Value = True Then
Select Case ctr.Caption
Case "Résultat d'une étude"
rep = "ETUDE" '*** ici le nom du répertoire lié à ce choix
Case "Résultat de brainstorming"
rep = "BRAINSTORMING" '*** ici le nom du répertoire lié à ce choix
'****************************
'à compléter avec les autres checkbox
'****************************
End Select

'*************************************************
'ici j'appelle la procédure de chargement avec le nom du répertoire
'*************************************************
Call Charger(rep)
End If
End If
Next ctr

End Sub

Sub Charger(ByVal R As String)
Dim TabListeFichiers() As String
Dim i As Integer
Dim Chemin As String

'***************************************************
'je suppose que les répertoires sont au même endroit que ton fichier
'***************************************************
Chemin = ActiveWorkbook.Path & "\" & R & "\"

'***************************************************
'j'ai mis un nombre au hazard, il faut qu'il soit au moins supérieur au nombre de dossiers
'***************************************************
ReDim TabListeFichiers(100)

'**************************
'chargement des noms de fichier
'**************************
i = 0
S = Dir(Chemin)
Do
'chargement complet du chemin du fichier dans le tableau
TabListeFichiers(i) = Chemin & S
i = i + 1

If S <> "" Then S = Dir
Loop While S <> ""

'********************************
'redimensionnement du tableau
'********************************
ReDim Preserve TabListeFichiers(i - 1)

'*****************************************
'j'insère les liens dans la feuille (ce code sur Excel 2007)
'peut-etre qu'une légère modif sera cécessaire à cet endroit.
'*****************************************

With Worksheets(1)
For l = 0 To i - 1
'*****************************************
'j'insère les liens dans la feuille (ce code sur Excel 2007)
'peut-etre qu'une légère modif sera cécessaire à cet endroit.
'*****************************************
.Hyperlinks.Add Anchor:=.Range("A" & l + 1), Address:=TabListeFichiers(l)
Next l
End With
End Sub

Ainsi les liens sont mis dans des cellules en fonction du choix sur le Userform.

Pour le reste ça demande un minimum d'implication de ta part pour pouvoir le compléter et l'adapter à tes besoins.

Bon courage

smotty
 

gerem

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

Smotty,

Merci pour toutes ces explications, je vais plancher sur tes "ecritages" comme dirait ma fille et je te tiens informé. Je vais faire de mon mieux. Merci encore.

Gerem
 

smotty

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

Re bonjour Gerem,

Je me permets de revenir sur le message précédent.

Je suis parti sur le principe que tu avais plusieurs fichiers par type de sélection. Peut-être n'as tu qu'un seul fichier par case cochée??

Peut-être peux-tu être plus précise?

Le code que je t'ai envoyé liste tous les fichiers d'un répertoire selon les choix faits sur le Userform.

Si tu n'as qu'un fichier par choix, alors tu peux te contenter uniquement du code suivant, mais il faut que tu complète l'adresse du fichier que je ne peux connaitre:

Private Sub CommandButton1_Click()
Dim ctr As Control
Dim rep As String

rep = ""
For Each ctr In Me.Controls

'*********************************************
'je ballaie tous les controls pour savoir lequel est sélectionné
'*********************************************
If TypeName(ctr) = "CheckBox" Then
If ctr.Value = True Then
Select Case ctr.Caption
Case "Résultat d'une étude"
rep ="Adresse complète du fichier"
Case "Résultat de brainstorming"
rep = "Adresse complète du fichier"
'****************************
'à compléter avec les autres checkbox
'****************************
End Select

'*************************************************
'ici j'appelle la procédure de chargement avec le nom du répertoire
'*************************************************
activesheet.Hyperlinks.Add Anchor:=.Range("A1"), Address:=rep
End If
End If
Next ctr

End Sub


En espérant que ça n'arrive pas trop tard?
 
Dernière édition:

gerem

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

Smotty,

En fait je ne sais pas où sont les fichiers, et peut importe si une case est cochée ou non.

Je voudrais juste que s'ils ont des fichiers à joindre, ils cliquent sur le bouton, ils arrivent sur leur répertoire "mes documents" et selectionnent le fichiers qu'ils souhaitent insérer. Ensuite, je retrouve les fichiers dans le document à un endroit prédéfini.

Merci encore pour ton aide, j'étudie tes "écritages" depuis tout à l'heure, je comprends certains trucs d'autres moins, mais je continue.

Gerem
 

smotty

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

Ah!! ça se précise.

Il y a le petit code suivant qui permet à l'utilisateur de rechercher des document et de récupérer leur chemin complet comme celà:

chemin=application.getopenfilename

quand l'utilisateur a sélectionné son fichier le chemin est récupéré dans la variable "chemin".

activesheet.Hyperlinks.Add Anchor:=Range("A1"), Address:=chemin

Mais après tout dépend de l'organisation à suivre.

Ce fichier Excel est-il sur un répertoire commun, document partagé? Est-ce que l'utilisateur t'envoie ce fichier par mail?

Sinon, une solution très simple, faire une macro qui envoie un mail automatiquement avec les fichiers joints sélectionnés précédemment?

Bref plusieurs solutions sont possibles.

Peux-tu donner des explications sur ces différents points?
 

gerem

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

Tu sais quoi, ce matin plusieurs trucs n'allaient pas et mon train avait du retard, bref la journée s'annonçait plutôt mal. Mais là avec ton aide et ton intérêt vraiment, je me dit finalement je suis plutôt chanceuse aujourd'hui, chanceuse de trouver quelqu'un qui veuille bien m'aider.

Alors, je vais t'expliquer un peu plus (désolée de ne pas l'avoir fait avant, je ne savais pas que ça pouvait aider)

Mon fichier sera sur l'intranet de l'entreprise. Les personnes voulant faire une demande de prise en charge de projet complèteront ce fichier et vont y ajouter certains documents pouvant être utiles. A la fin ils m'enverront le fichier de demande de prise en charge via outlook.

Je t'aurais bien joint le fichier en question mais il est trop lourd.

voilà

Gerem
 

smotty

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

Gerem,

Le fait que le fichier concerné soit sur intranet complique un peu les choses.

Rien n'est impossible mais il faut savoir que si tu veux que les liens fonctionnent, il faut que les fichiers soient enregistrés également sur intranet. Plus précisément, les fichiers sont envoyés. Ce n'est pas une simple copie du fichier.

C'est ce qui se passe quand tu envoie ton fichier sur ce forum.

Celà demande un code plus compliqué utilisant ce qu'on appelle des API, qui permettent d'envoyer un fichier sur ftp. Pour celà, tu as besoin du mot de passe qui permet la connexion intranet, qui, je l'espère, est sécurisée ainsi que quelques autres informations.

J'ai tout le code puisque j'utilise personnellement ce procédé mais je crains que ça soit un peu compliqué.

Bref avant d'en arriver là, je vais étudier un peu plus la question car peut-être qu'une solution plus simple peut être envisagée via Outlook? puisqu'à la fin la demande de prise en charge est envoyée par mail.

Je te tiens au courant.

smotty
 

gerem

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

Smotty,

J'avais bien compris le problème de l'intranet et des liens ne pouvant fonctionner. C'est pourquoi je voulais trouver une macro permettant d'insérer un fichier sous forme d'icône.

Tu sais quand dans excel tu fais:

Insertion/Objet/Créer à partir du fichier/Parcourir (choisir le fichier) et/cocher l'option "afficher sous forme d'icône"

Normalement quand on fait ces manipulations, le fichier inséré est bien intégré dans le fichier excel. J'ai donc fait ces manipulations en essayant d'enregistrer la macro et je me retrouve avec ceci:

Sub inser()
'
' inser Macro
' Macro enregistrée le 13/11/2008 par Géraldine
'

'
Workbooks.Open Filename:= _
"C:\Documents and Settings\Mes documents\BOULOT\**NOM DU FICHIER**"
ActiveWindow.Visible = False
ActiveSheet.OLEObjects.Add(Filename:= _
"C:\Documents and Settings\Mes documents\BOULOT\**NOM DU FICHIER**" _
, Link:=False, DisplayAsIcon:=True, IconFileName:= _
"C:\WINDOWS\Installer\{0000040C-78E1-11D2-B60F-006097C998E7}\xlicons.exe", _
IconIndex:=0, IconLabel:= _
"C:\Documents and Settings\Mes documents\BOULOT\**NOM DU FICHIER**" _
).Select
Range("C12").Select
Application.Goto Reference:="inser"
End Sub




Le problème, c'est que si j'active cette macro il me remet le fichier selectionné dans une case alors que je veux juste arriver au stade ou les personnnes choisissent eux mêmes leurs fichiers.

GEREM
 

smotty

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

J'en apprends tous les jours, j'ai toujours pensé que ce type d'insertion était juste un lien.:p

donc tu as déjà fait la moitié du travail.

Essaie donc le fichier joint.

En cliquant sur le bouton la personne insère le fichier de son choix.

J'ai juste repris le code que tu as donné en le mettant dans une procédure (avec qq modifs)

On tient le bon bout...
 

Pièces jointes

  • telecharger fichiers2.xls
    33 KB · Affichages: 123
  • telecharger fichiers2.xls
    33 KB · Affichages: 128
  • telecharger fichiers2.xls
    33 KB · Affichages: 136
Dernière édition:

smotty

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

Bonjour Gerem,

J'espère que tu vas bien, jai travaillé pour toi dans le train ce matin.

Comme sur mon portable je travaille sur office 2007, le fichier est un peu trop lourd pour être joint donc voici un code qui permet aux utilisateurs d'insérer plusieurs fichiers en même temps. Ils sélectionnent les fichiers en maintenant CTRL appuyé.
De plus il place les éléments sur la feuille car sinon ils sont chargés les uns au dessus des autres.
La différence est la variable mise à true dans getopenfilename et donc ça retourne un tableau des fichiers sélectionnés.

La seule chose que je n'ai pas revue c'est l'icône mais sinon tout est ok.

Cordialement

smotty

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
 

gerem

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

Bonjour Smotty,

Désolée, journée de fou aujourd'hui!

Je viens d'ouvrir ton fichier compressé, tu es génial!!!!!!!!!!!!!!!!!!!!

:p:p:p

MERCI MERCI MERCI

Je me disais bien ça devait être possible, mais comme dit, je suis une débutante en macro.

Ben je suis contente de t'avoir appris un tout chti truc tout de même concernant les objets. Je me suis envoyé le fichier modifié à la maison pour être bien certaine de ne pas m'être trompée concernant le fait que le fichier était intégré.

Je ne sais pas comment te remercier, tu m'as vraiment aidée. Merci encore.

Gerem
 

Discussions similaires

Statistiques des forums

Discussions
312 098
Messages
2 085 265
Membres
102 844
dernier inscrit
atori2