Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion Lachmacros
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

Lachmacros

Guest
Bonjour Tout le monde,
Je sollicite votre aide pour un problème rencontré dans ma ma macro.
pour être plus claire, j'ai une macro "1" qui sélectionne un répertoire, ensuite elle fait appel à une macro "2" ; qui analyse le répertoire et liste tous les fichiers trouvés dans un tableau array mais
dès qu'elle termine l'exploration, en retournant vers la macro "1" , elle ne garde plus les donnée listée dans l'array.
je veux conserver ces données ou fichiers afin de les utiliser comme donnée d'entrée pour l'appel d'une autre macro.
je ne suis pas arrivé à solutionner ce problème, quelqu'un peut m'aider??
Merci
 
Re : tableaux ARRAY


Bonsoir,
Attention à la portée d'une variable ! déclarée dans en tête de module ou dans une Sub n'a pas la même incidence. Elle peut être déclarée Static ou Global ... tout ça dépend de ce que l'on veut en faire.
Mis à par ça , un tableau de type ARRAY attribué à une variable doit être de type Variant.
Voila des éléments de réflexion.
Bon courage
 
Dernière édition:
Re : tableaux ARRAY

Bonjour Tout le monde,
Merci Speel de tes conseils, mais le problème n'est pas là
je vous explique ça en détail
en premier lieu je récupère le fichier et j'appel la macro "macro2(Chemin, ma_liste:=Liste_Fichier)" à l'aide de cette macros "1"
Code:
 Sub macro1 ()
     Dim Chemin As String
     Dim GestionFichier As Scripting.FileSystemObject
     Dim Liste_Fichier(1 To 500) As Variant
     Application.ScreenUpdating = False
        Chemin = "le chemin d'un  repertoire"
           Set GestionFichier = Nothing
        If Chemin <> "" Then
            Call macro2(Chemin, ma_liste:=Liste_Fichier)
        End If
End Sub
ainsi la macro2 fais l'analyse et liste les fichiers de format txt dans un array
Code:
Sub macro2(Repertoire As String, ByRef ma_liste() As Variant)

    Dim Fso As Scripting.FileSystemObject
    Dim SourceFolder As Scripting.Folder
    Dim SubFolder As Scripting.Folder
    Dim FileItem As Scripting.file
    Dim I As Long
    Static file_counter As Long
      
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = Fso.GetFolder(Repertoire)
   
        For Each FileItem In SourceFolder.Files
            file_counter = file_counter + 1
              If FileItem Like "*.txt" then 
              ma_liste(file_counter) = FileItem.Name
              End If
              Next FileItem
       
        'Appel récursif pour lister les fichier dans les sous-répertoires ---.
        For Each SubFolder In SourceFolder.SubFolders
            Call Analyse_Repertoire(SubFolder.Path, ma_liste:=ma_liste)
        Next SubFolder

End Sub

dès que l'analyse s'effectue elle retourne vers la macro1, à ce moment là les données dans le array (liste des fichiers txt ) seront perdues.
je ne sais s'il ya une commande qui permet de conserver la liste, j'ai essayé avec Redim et Redim Preserve mais ça ne marche pas.
j veux garder cette liste afin de l'utiliser dans une autre macro comme une donnée d'entrée genre
Code:
Call macro3(ma_liste)


Dépêches-toi, je compte jusqu'à 127 après il sera trop tard
Staple1600, j'espère que ce n'est pas trop tard 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…