Bonjour Michel,
Suite du feuilleton, mais quelle patience ;o)
Bon, j'ai un problème avec ta proposition : à quoi cela sert ton sub test()
? et comment l'utilises-tu ? (la première fois je ne l'ai carrément pas
ajouté car je ne voyais pas à quoi il servait : j'ai ajouté les déclarations
à Lister
Pour info j'associe directement Lister(spath) à click sur un bouton...
Et où je les mets ces déclarations que tu indiques au début ?Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Merci de m'éclairer,
Sonia.
"Michel_D" a écrit dans le message de
news:re,Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même,
mais bon)
Cordialement,
Sonia.
Essaye avec le code suivant :
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "C:TonChemin"
sTmp = ""
Lister sChemin
Debug.Print sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath<>sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour Michel,
Suite du feuilleton, mais quelle patience ;o)
Bon, j'ai un problème avec ta proposition : à quoi cela sert ton sub test()
? et comment l'utilises-tu ? (la première fois je ne l'ai carrément pas
ajouté car je ne voyais pas à quoi il servait : j'ai ajouté les déclarations
à Lister
Pour info j'associe directement Lister(spath) à click sur un bouton...
Et où je les mets ces déclarations que tu indiques au début ?
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Merci de m'éclairer,
Sonia.
"Michel_D" <Michel.NOSPAM@orange-ft.com.invalid> a écrit dans le message de
news: O09ertanIHA.4664@TK2MSFTNGP06.phx.gbl...
re,
Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même,
mais bon)
Cordialement,
Sonia.
Essaye avec le code suivant :
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "C:TonChemin"
sTmp = ""
Lister sChemin
Debug.Print sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath<>sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour Michel,
Suite du feuilleton, mais quelle patience ;o)
Bon, j'ai un problème avec ta proposition : à quoi cela sert ton sub test()
? et comment l'utilises-tu ? (la première fois je ne l'ai carrément pas
ajouté car je ne voyais pas à quoi il servait : j'ai ajouté les déclarations
à Lister
Pour info j'associe directement Lister(spath) à click sur un bouton...
Et où je les mets ces déclarations que tu indiques au début ?Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Merci de m'éclairer,
Sonia.
"Michel_D" a écrit dans le message de
news:re,Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même,
mais bon)
Cordialement,
Sonia.
Essaye avec le code suivant :
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "C:TonChemin"
sTmp = ""
Lister sChemin
Debug.Print sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath<>sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonsoir,
Ben voilà comment j'ai utilisé ta première proposition :
Sub Lister(sPath)
Dim oFso As Object
Dim oDc As Object
Dim oD As Object
Dim oF As Object
Dim sTmp As String
Set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Lister ("I:RIBPIRIBPI_C_1979_01")
End Sub
C'est dans le click que je donne le chemin (la c'est juste pour tester,
ensuite il sera conditionnel : le répertoire à explorer sera fonction de
l'enregistrement en cours...)
Quant aux déclarations en dehors des procédures, chez moi cela ne fonctionne
pas... (ou je ne m'y prends pas comme il faut : mais obligé de remettre le
stmp à l'intérieur du Sub...)
Bonsoir,
Ben voilà comment j'ai utilisé ta première proposition :
Sub Lister(sPath)
Dim oFso As Object
Dim oDc As Object
Dim oD As Object
Dim oF As Object
Dim sTmp As String
Set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Lister ("I:RIBPIRIBPI_C_1979_01")
End Sub
C'est dans le click que je donne le chemin (la c'est juste pour tester,
ensuite il sera conditionnel : le répertoire à explorer sera fonction de
l'enregistrement en cours...)
Quant aux déclarations en dehors des procédures, chez moi cela ne fonctionne
pas... (ou je ne m'y prends pas comme il faut : mais obligé de remettre le
stmp à l'intérieur du Sub...)
Bonsoir,
Ben voilà comment j'ai utilisé ta première proposition :
Sub Lister(sPath)
Dim oFso As Object
Dim oDc As Object
Dim oD As Object
Dim oF As Object
Dim sTmp As String
Set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Lister ("I:RIBPIRIBPI_C_1979_01")
End Sub
C'est dans le click que je donne le chemin (la c'est juste pour tester,
ensuite il sera conditionnel : le répertoire à explorer sera fonction de
l'enregistrement en cours...)
Quant aux déclarations en dehors des procédures, chez moi cela ne fonctionne
pas... (ou je ne m'y prends pas comme il faut : mais obligé de remettre le
stmp à l'intérieur du Sub...)
Bonjour,
Il faut déclarer les 3 premières variables tous au début (en haut).
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "I:RIBPIRIBPI_C_1979_01"
sTmp = ""
Lister sChemin
Me![Description] = sTmp
' MsgBox sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Test
End Sub
"gogo" a écrit dans le message de
news:Bonsoir,
Ben voilà comment j'ai utilisé ta première proposition :
Sub Lister(sPath)
Dim oFso As Object
Dim oDc As Object
Dim oD As Object
Dim oF As Object
Dim sTmp As String
Set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Lister ("I:RIBPIRIBPI_C_1979_01")
End Sub
C'est dans le click que je donne le chemin (la c'est juste pour tester,
ensuite il sera conditionnel : le répertoire à explorer sera fonction de
l'enregistrement en cours...)
Quant aux déclarations en dehors des procédures, chez moi cela ne
fonctionne
pas... (ou je ne m'y prends pas comme il faut : mais obligé de remettre
le
stmp à l'intérieur du Sub...)
Bonjour,
Il faut déclarer les 3 premières variables tous au début (en haut).
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "I:RIBPIRIBPI_C_1979_01"
sTmp = ""
Lister sChemin
Me![Description] = sTmp
' MsgBox sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Test
End Sub
"gogo" <sonia.gaubert@club-internet.fr> a écrit dans le message de
news:OLN6QilnIHA.3532@TK2MSFTNGP05.phx.gbl...
Bonsoir,
Ben voilà comment j'ai utilisé ta première proposition :
Sub Lister(sPath)
Dim oFso As Object
Dim oDc As Object
Dim oD As Object
Dim oF As Object
Dim sTmp As String
Set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Lister ("I:RIBPIRIBPI_C_1979_01")
End Sub
C'est dans le click que je donne le chemin (la c'est juste pour tester,
ensuite il sera conditionnel : le répertoire à explorer sera fonction de
l'enregistrement en cours...)
Quant aux déclarations en dehors des procédures, chez moi cela ne
fonctionne
pas... (ou je ne m'y prends pas comme il faut : mais obligé de remettre
le
stmp à l'intérieur du Sub...)
Bonjour,
Il faut déclarer les 3 premières variables tous au début (en haut).
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "I:RIBPIRIBPI_C_1979_01"
sTmp = ""
Lister sChemin
Me![Description] = sTmp
' MsgBox sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Test
End Sub
"gogo" a écrit dans le message de
news:Bonsoir,
Ben voilà comment j'ai utilisé ta première proposition :
Sub Lister(sPath)
Dim oFso As Object
Dim oDc As Object
Dim oD As Object
Dim oF As Object
Dim sTmp As String
Set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
Set oDc = Nothing
Set oD = Nothing
End Sub
Private Sub Commande844_Click()
Lister ("I:RIBPIRIBPI_C_1979_01")
End Sub
C'est dans le click que je donne le chemin (la c'est juste pour tester,
ensuite il sera conditionnel : le répertoire à explorer sera fonction de
l'enregistrement en cours...)
Quant aux déclarations en dehors des procédures, chez moi cela ne
fonctionne
pas... (ou je ne m'y prends pas comme il faut : mais obligé de remettre
le
stmp à l'intérieur du Sub...)
Bonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre tous
les sous-répertoires et les fichiers qu'ils contiennent, voir les sous-sous
répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans mon
résultat : l'ordre est correct et peut se déduire mais jusqu'à un certain
point quand même... ? Possible d'intégrer des tirets devant les occurences
correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
hmm??
Par avance encore merci,
Sonia.
Voici le code :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Dim RepFonds As String
Dim NomRepObjet As String
Dim ChemRepObjet As String
Dim NomRepPhase As String
Option Explicit
Sub Test2()
RepFonds = "I:" & Me![Abreviation]
NomRepObjet = Me![Refobjet]
ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = ChemRepObjet & NomRepPhase & ""
sTmp = ""
Lister sChemin
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre tous
les sous-répertoires et les fichiers qu'ils contiennent, voir les sous-sous
répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans mon
résultat : l'ordre est correct et peut se déduire mais jusqu'à un certain
point quand même... ? Possible d'intégrer des tirets devant les occurences
correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
hmm??
Par avance encore merci,
Sonia.
Voici le code :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Dim RepFonds As String
Dim NomRepObjet As String
Dim ChemRepObjet As String
Dim NomRepPhase As String
Option Explicit
Sub Test2()
RepFonds = "I:" & Me![Abreviation]
NomRepObjet = Me![Refobjet]
ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = ChemRepObjet & NomRepPhase & ""
sTmp = ""
Lister sChemin
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre tous
les sous-répertoires et les fichiers qu'ils contiennent, voir les sous-sous
répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans mon
résultat : l'ordre est correct et peut se déduire mais jusqu'à un certain
point quand même... ? Possible d'intégrer des tirets devant les occurences
correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
hmm??
Par avance encore merci,
Sonia.
Voici le code :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Dim RepFonds As String
Dim NomRepObjet As String
Dim ChemRepObjet As String
Dim NomRepPhase As String
Option Explicit
Sub Test2()
RepFonds = "I:" & Me![Abreviation]
NomRepObjet = Me![Refobjet]
ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = ChemRepObjet & NomRepPhase & ""
sTmp = ""
Lister sChemin
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il vaut
mieux déclarer les variables au niveau de la procédure ou de la fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") & Mid(sPath,InstrRev(sPath,"")+1)
& ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End SubBonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
hmm??
Par avance encore merci,
Sonia.
Voici le code :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Dim RepFonds As String
Dim NomRepObjet As String
Dim ChemRepObjet As String
Dim NomRepPhase As String
Option Explicit
Sub Test2()
RepFonds = "I:" & Me![Abreviation]
NomRepObjet = Me![Refobjet]
ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = ChemRepObjet & NomRepPhase & ""
sTmp = ""
Lister sChemin
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il vaut
mieux déclarer les variables au niveau de la procédure ou de la fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") & Mid(sPath,InstrRev(sPath,"")+1)
& ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
hmm??
Par avance encore merci,
Sonia.
Voici le code :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Dim RepFonds As String
Dim NomRepObjet As String
Dim ChemRepObjet As String
Dim NomRepPhase As String
Option Explicit
Sub Test2()
RepFonds = "I:" & Me![Abreviation]
NomRepObjet = Me![Refobjet]
ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = ChemRepObjet & NomRepPhase & ""
sTmp = ""
Lister sChemin
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il vaut
mieux déclarer les variables au niveau de la procédure ou de la fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") & Mid(sPath,InstrRev(sPath,"")+1)
& ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End SubBonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
hmm??
Par avance encore merci,
Sonia.
Voici le code :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Dim RepFonds As String
Dim NomRepObjet As String
Dim ChemRepObjet As String
Dim NomRepPhase As String
Option Explicit
Sub Test2()
RepFonds = "I:" & Me![Abreviation]
NomRepObjet = Me![Refobjet]
ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = ChemRepObjet & NomRepPhase & ""
sTmp = ""
Lister sChemin
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & mId(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Merci beaucoup Michel pour ta fidélité :o)
Pour l'instant cela plante sur Niv : non défini... je déclare comment ?
A plus,
Sonia.
"Michel_D" a écrit dans le message de
news:Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il vaut
mieux déclarer les variables au niveau de la procédure ou de la fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") & Mid(sPath,InstrRev(sPath,"")+1)
& ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End SubBonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
Merci beaucoup Michel pour ta fidélité :o)
Pour l'instant cela plante sur Niv : non défini... je déclare comment ?
A plus,
Sonia.
"Michel_D" <Michel.NOSPAM@orange-ft.com.invalid> a écrit dans le message de
news: eMUsUshoIHA.2636@TK2MSFTNGP04.phx.gbl...
Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il vaut
mieux déclarer les variables au niveau de la procédure ou de la fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") & Mid(sPath,InstrRev(sPath,"")+1)
& ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
Merci beaucoup Michel pour ta fidélité :o)
Pour l'instant cela plante sur Niv : non défini... je déclare comment ?
A plus,
Sonia.
"Michel_D" a écrit dans le message de
news:Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il vaut
mieux déclarer les variables au niveau de la procédure ou de la fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") & Mid(sPath,InstrRev(sPath,"")+1)
& ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End SubBonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
re,
Tu as du oublier ceci :
Sub Lister(sPath, Niv)
que tu peux d'ailleurs transformer en :
Sub Lister(sPath As String, Niv As Long)Merci beaucoup Michel pour ta fidélité :o)
Pour l'instant cela plante sur Niv : non défini... je déclare comment ?
A plus,
Sonia.
"Michel_D" a écrit dans le message
de news:Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il
vaut
mieux déclarer les variables au niveau de la procédure ou de la
fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") &
Mid(sPath,InstrRev(sPath,"")+1) & ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End SubBonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
re,
Tu as du oublier ceci :
Sub Lister(sPath, Niv)
que tu peux d'ailleurs transformer en :
Sub Lister(sPath As String, Niv As Long)
Merci beaucoup Michel pour ta fidélité :o)
Pour l'instant cela plante sur Niv : non défini... je déclare comment ?
A plus,
Sonia.
"Michel_D" <Michel.NOSPAM@orange-ft.com.invalid> a écrit dans le message
de news: eMUsUshoIHA.2636@TK2MSFTNGP04.phx.gbl...
Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il
vaut
mieux déclarer les variables au niveau de la procédure ou de la
fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") &
Mid(sPath,InstrRev(sPath,"")+1) & ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Bonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.
re,
Tu as du oublier ceci :
Sub Lister(sPath, Niv)
que tu peux d'ailleurs transformer en :
Sub Lister(sPath As String, Niv As Long)Merci beaucoup Michel pour ta fidélité :o)
Pour l'instant cela plante sur Niv : non défini... je déclare comment ?
A plus,
Sonia.
"Michel_D" a écrit dans le message
de news:Bonjour,
Ne déclare en variable globale que lorsque c'est nécessaire sinon il
vaut
mieux déclarer les variables au niveau de la procédure ou de la
fonction
ou elle s'applique, ceci étant dit, voila ma proposition :
Option Compare Database
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Option Explicit
Sub Test2()
' RepFonds = "I:" & Me![Abreviation]
' NomRepObjet = Me![Refobjet]
' ChemRepObjet = "I:" & Me![Abreviation] & "" & NomRepObjet & ""
' NomRepPhase = Me![RepPhase]
Set oFso = CreateObject("Scripting.FileSystemObject")
' sChemin = ChemRepObjet & NomRepPhase & ""
sChemin = "I:" & Me![Abreviation] & "" & Me![Refobjet] & "" &
Me![RepPhase]
sTmp = ""
Lister sChemin, 0
Me![Description] = Me![Description] & vbCrLf & sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath, Niv)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath <> sChemin Then
sTmp = sTmp & String(Niv-1,"-") &
Mid(sPath,InstrRev(sPath,"")+1) & ";" & vbcrlf
End If
If oDc.Files.Count>0 Then
sTmp = sTmp & String(Niv,"-")
For Each oF In oDc.Files
sTmp = sTmp & oF.name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.name,Niv+1
Next
End If
Set oDc = Nothing
Set oD = Nothing
End SubBonjour,
Je ne sais si Michel D est encore dans le coin, et encore disposé à
m'aider... car après avoir cru que tout était parfait, j'ai encore deux
problèmes...
J'ai modifié le code parce que le chemin du répertoire à explorer est
conditionnel - (ci-dessous le code)
Et voilà ce qui cloche encore :
1) au résultat je n'ai pas les fichiers du 1er niveau (j'ai par contre
tous les sous-répertoires et les fichiers qu'ils contiennent, voir les
sous-sous répertoires et leurs fichiers...)
2) comment faire en sorte qu'apparaissent clairement la hiérarchie dans
mon résultat : l'ordre est correct et peut se déduire mais jusqu'à un
certain point quand même... ? Possible d'intégrer des tirets devant les
occurences correspondant à leurs niveaux, par exemple :
REPERTOIRE1
- Sous-répertoire1
-- Fichier du sous-répertoire1
-- Sous-sous répertoire1
--- fichier du sous-sous répertoire1
- Sous-répertoire2
-- Fichier du sous-répertoire2
REPERTOIRE2
etc.