Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/01/2012, 15h41   #1
Invité régulier
 
Homme
Inscription : novembre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 85
Points : 5
Points : 5
Par défaut Souci dans macro complexe

bonjour à tous, j'ai trouvé une macro que je souhaiterai utiliser, malheureusement, je fais face à une ereur que je n'arrive pas a resoudre..
la macro est une du forum, elle permet de lister les fichier présents dans un repertoire: voici la macro

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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).
 
    UserForm1.Show
 
    'Appelle la procédure de recherche des fichiers
    ListeFichiers Dossier
    'Ajuste la largeur des colonnes A:E en fonction du contenu des cellules.
    Sheets("Fichier à traiter").Columns("A:E").AutoFit
    MsgBox "Analyse fichier 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
        Sheets("Fichier à traiter").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
        Sheets("Fichier à traiter").Cells(i, 2) = FileItem.DateCreated
        'Indique la date de dernier acces
        Sheets("Fichier à traiter").Cells(i, 3) = FileItem.DateLastAccessed
        'Indique la date de dernière modification
        Sheets("Fichier à traiter").Cells(i, 4) = FileItem.DateLastModified
        'Nom du répertoire
        Sheets("Fichier à traiter").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
l'erreur est une erreur 5 argument ou appel de procédure incorrect, et elle me spécifie la ligne : Set SourceFolder = Fso.GetFolder(Repertoire)

en effet, en essayant de déchiffrer la macro, il apparait que repertoire est definit comme variable string, mais n'est pas initialisé,
j'ai essayé de remplacer repertoire par mon dossier à scanner, mais la macro plante instantanéement...

merci e votre aide
kyros21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 17h12   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
c'est la variable dossier de la première procédure qu'il faut que tu initialise (ce qui était fait dans le userForm dans le code que tu as copié.)
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 08h46   #3
Invité régulier
 
Homme
Inscription : novembre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 85
Points : 5
Points : 5
en fait la userform c'est moi qui l'ai rajouté pour justement initialisé la variable dossier, mais malgrès sa, sa ne fonctionne pas ...
Par contre ce que j'ai est-il bien valable? :

j'ai mis une userform avec une textbox, et je recupere la valeur de la textbox,

avec dossier=textbox1.value

sachant que la valeur rentré dans le textbox1 est un chemin d'accès ( avec: / etc..)

merci
kyros21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 09h09   #4
Invité régulier
 
Homme
Inscription : novembre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 85
Points : 5
Points : 5
probleme resolu, merci de votre aide, en fait la variable dossier etait déclaré dans la macro en Dim, et n'etait pas déclaré dans la userform, la ou j'ai ecrit le code : dossier : textbox1.value


Voila merci
kyros21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h58.


 
 
 
 
Partenaires

Hébergement Web