Bonjour à tous,
Je dispose d'un macro me permettant de lister des feuilles excel d'un dossier sur le réseau dont une case est noté outils usé.
Je souhaiterai que le chemin d'acces du dossier soit variable afin que l'on puisse le modifier automatiquement par des bouton, sans passer par une macro.
J'ai dékà mis en macro mes bouton de selection de dossier, et le chemin d'acces s'enregistre dans la variable "module1.dossier"
Voici un c/c de ma macro se trouvant dans "macro"
Option Explicit
Option Base 1
Dim NbFichiers As Integer
Dim Tableau() As Variant
' On suppose que tous les fichiers contiennent les données dans Feuil1
Const NomFeuille As String = "Feuil1"
' Dossier de test
Const dossier As String = "N:\Q.S.E\Personnel\Essai excel\"
Const RchChaine As String = "outil usé"
Private Function ListeFichiersTableau(ByVal dossier As String)
Dim NomFichier As String
NbFichiers = 0
NomFichier = Dir(dossier)
Erase Tableau
Do While Len(NomFichier) > 0
NbFichiers = NbFichiers + 1
NomFichier = Dir()
Loop
If NbFichiers > 0 Then
ReDim Tableau(2, 1 To NbFichiers)
NbFichiers = 0
NomFichier = Dir(dossier)
Do While Len(NomFichier) > 0
NbFichiers = NbFichiers + 1
Tableau(1, NbFichiers) = NomFichier
Tableau(2, NbFichiers) = ExtraireValeur(dossier, NomFichier, NomFeuille, "M1")
NomFichier = Dir()
Loop
End If
End Function
Private Function ExtraireValeur(ByVal dossier As String, ByVal fichier As String, ByVal feuille As String, ByVal Cellule As String)
Dim argument As String
argument = "'" & dossier & "[" & fichier & "]" & feuille & "'!" & Range(Cellule).Address(, , xlR1C1)
ExtraireValeur = ExecuteExcel4Macro(argument)
End Function
Sub btnLecture_QuandClic()
ListeFichiersTableau dossier
RemplirListebox
ShOutilsUses.Show
End Sub
Private Sub RemplirListebox()
Dim i As Integer
ShOutilsUses.cboOutils.Clear
For i = 1 To NbFichiers
If Tableau(2, i) = RchChaine Then
ShOutilsUses.cboOutils.AddItem Tableau(1, i)
End If
Next
ShOutilsUses.cboOutils.ListRows = NbFichiers
End Sub
Je voudrais changer la ligne en rouge pour y mettre ma variable "module1.dossier. J'ai déjà testé : dim dossier as string et en dessous : dossier = module1.dossier, en rappelant la variable avant chaque macro//// petit problème, il me met des erreurs
J'espère que j'ai été assez précis dans mes propos, ne pas hésiter à me poser des questions.
En vous remerciant par avance
Bonne journée
greg
Je dispose d'un macro me permettant de lister des feuilles excel d'un dossier sur le réseau dont une case est noté outils usé.
Je souhaiterai que le chemin d'acces du dossier soit variable afin que l'on puisse le modifier automatiquement par des bouton, sans passer par une macro.
J'ai dékà mis en macro mes bouton de selection de dossier, et le chemin d'acces s'enregistre dans la variable "module1.dossier"
Voici un c/c de ma macro se trouvant dans "macro"
Option Explicit
Option Base 1
Dim NbFichiers As Integer
Dim Tableau() As Variant
' On suppose que tous les fichiers contiennent les données dans Feuil1
Const NomFeuille As String = "Feuil1"
' Dossier de test
Const dossier As String = "N:\Q.S.E\Personnel\Essai excel\"
Const RchChaine As String = "outil usé"
Private Function ListeFichiersTableau(ByVal dossier As String)
Dim NomFichier As String
NbFichiers = 0
NomFichier = Dir(dossier)
Erase Tableau
Do While Len(NomFichier) > 0
NbFichiers = NbFichiers + 1
NomFichier = Dir()
Loop
If NbFichiers > 0 Then
ReDim Tableau(2, 1 To NbFichiers)
NbFichiers = 0
NomFichier = Dir(dossier)
Do While Len(NomFichier) > 0
NbFichiers = NbFichiers + 1
Tableau(1, NbFichiers) = NomFichier
Tableau(2, NbFichiers) = ExtraireValeur(dossier, NomFichier, NomFeuille, "M1")
NomFichier = Dir()
Loop
End If
End Function
Private Function ExtraireValeur(ByVal dossier As String, ByVal fichier As String, ByVal feuille As String, ByVal Cellule As String)
Dim argument As String
argument = "'" & dossier & "[" & fichier & "]" & feuille & "'!" & Range(Cellule).Address(, , xlR1C1)
ExtraireValeur = ExecuteExcel4Macro(argument)
End Function
Sub btnLecture_QuandClic()
ListeFichiersTableau dossier
RemplirListebox
ShOutilsUses.Show
End Sub
Private Sub RemplirListebox()
Dim i As Integer
ShOutilsUses.cboOutils.Clear
For i = 1 To NbFichiers
If Tableau(2, i) = RchChaine Then
ShOutilsUses.cboOutils.AddItem Tableau(1, i)
End If
Next
ShOutilsUses.cboOutils.ListRows = NbFichiers
End Sub
Je voudrais changer la ligne en rouge pour y mettre ma variable "module1.dossier. J'ai déjà testé : dim dossier as string et en dessous : dossier = module1.dossier, en rappelant la variable avant chaque macro//// petit problème, il me met des erreurs
J'espère que j'ai été assez précis dans mes propos, ne pas hésiter à me poser des questions.
En vous remerciant par avance
Bonne journée
greg