Excel 2016: Passer une cellule en parametre d'une macro [Résolu]

poparnassus 410 Messages postés vendredi 28 mars 2014Date d'inscription 9 décembre 2017 Dernière intervention - 29 juil. 2017 à 15:24 - Dernière réponse : Patrice33740 6316 Messages postés dimanche 13 juin 2010Date d'inscription 11 décembre 2017 Dernière intervention
- 30 juil. 2017 à 21:46
Bonjour,

J'ai une macro que j'ai trouver sur internet (Je n'ai aucune connaissance en vba), que j'active via un boutton.

Je veux que la variable "Dossier" de la macro prenne en parametre le chemin d'acces du repertoire qui est stcker dans la cellule à gauche de mon boutton.

Boutton (M5)
Chemin d'acces (L5)

Mais le truc, c'est je ne veux pas entrer en brut le numéro de cellule je veux qui tienne compte de la position du boutton et qui definisse le chemin à colonne -1


Code Macro:

Option Explicit

Sub TestListeFichiers()
Dim Dossier As String

'Définit le répertoire pour débuter la recherche de fichiers.
'(Attention à ne pas indiquer un répertoire qu contient trop de sous-dossiers ou de
'fichiers, sinon le temps de traitement va être très long).
Dossier = "C:\Documents and Settings\mimi\dossier"

'Appelle la procédure de recherche des fichiers
ListeFichiers Dossier

'Ajuste la largeur des colonnes A:E en fonction du contenu des cellules.
Columns("A:E").AutoFit
MsgBox "Terminé"
End Sub



Sub ListeFichiers(Repertoire As String)
'
'Nécessite d'activer la référence "Microsoft Scripting RunTime"
'Dans l'éditeur de macros (Alt+F11):
'Menu Outils
'Références
'Cochez la ligne "Microsoft Scripting RunTime".
'Cliquez sur le bouton OK pour valider.

Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim FileItem As Scripting.File
Dim i As Long

Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)

'Récupère le numéro de la dernière ligne vide dans la colonne A.
i = Range("A65536").End(xlUp).Row + 1

'Boucle sur tous les fichiers du répertoire
For Each FileItem In SourceFolder.Files
'Inscrit le nom du fichier dans la cellule
Cells(i, 1) = FileItem.Name
'Ajoute un lien hypertexte vers le fichier
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), _
Address:=FileItem.ParentFolder & "\" & FileItem.Name
'Indique la date de création
Cells(i, 2) = FileItem.DateCreated
'Indique la date de dernier acces
Cells(i, 3) = FileItem.DateLastAccessed
'Indique la date de dernière modification
Cells(i, 4) = FileItem.DateLastModified
'Nom du répertoire
Cells(i, 5) = FileItem.ParentFolder

i = i + 1
Next FileItem


'--- Appel récursif pour lister les fichier dans les sous-répertoires ---.
For Each SubFolder In SourceFolder.subfolders
ListeFichiers SubFolder.Path
Next SubFolder

End Sub



Afficher la suite 
410Messages postés vendredi 28 mars 2014Date d'inscription 9 décembre 2017 Dernière intervention

1 réponse

Répondre au sujet
Patrice33740 6316 Messages postés dimanche 13 juin 2010Date d'inscription 11 décembre 2017 Dernière intervention - Modifié par Patrice33740 le 30/07/2017 à 21:46
0
Utile
Bonjour,

Tout ça n'est pas très clair !!!

Je ne vois pas le rapport entre le titre, l'exposé du problème et le code de la macro !

Voici une macro qui définit la cellule à gauche d'un bouton ActiveX et la passe en argument (i.e. paramètre) à une macro (nommée MaMacro) :

Option Explicit
Private Sub CommandButton1_Click()
Dim c As Range
  'Définir la cellule à gauche du bouton
  Set c = Me.CommandButton1.TopLeftCell.Offset(0, -1)
  'Passage de la cellule en paramètre
  Call MaMacro(c)
End Sub

Private Sub MaMacro(Cellule As Range)
  'Exploitation de la cellule passée en argument
  MsgBox Cellule.Address
End Sub

Cordialement
Patrice
Commenter la réponse de Patrice33740