Bonjour à tous.
J'aurais besoin d'un coup de main. Je ne sais pas du tout comment faire et
par quoi commencer.
Je vous explique.
Je parviens à Editer dans un fichier texte le contenu d'un répertoire, à
partir de l'explorateur windows. (Source que j'ai trouvé dans les trucs de
W98)
"Command.com /c dir /b/s> c:\Listing.txt"
Donc avec un clic droit, j'ai un p'tit menu, "Lister" qui réalise un fichier
texte appelé Listing.txt.
Bon jusque là tout va bien. Ensuite je l'ouvre dans Excel.
Alors là commene le Hic.
Je converti pour séparer les champs sur un caractère donné : le "\"
Mais en fait je voudrai avoir une macro qui sache lire le fichier texte,
pour me mettre en col.A par exemple le chemin complet et en col.B juste le
nom du fichier.
Parceque là tout ce retrouve mélanger. Comment je peux faire.
Sachant que mes répertoires comportent des sous répertoires etc...
Si vous avez des idéees ou des trucs qui peuvent m'aider .... je suis dans
les choux !
Ah oui juste un point : je suis pas un pro de VB, je me débrouille, enfin je
bidouille
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FxM
Bonjour,
A placer dans le module de la feuille qui contient les chemins : Alt-F11, double-clic sur le nom de la feuille puis colle ce qui suit.
Execute-le en mode pas à pas (presse F8) pour voir si c'est OK. Su oui, continue par F5.
Sub test() 'va parcourir la colonne A For a = 1 To Range("A65536").End(xlUp).Row 'lit le nom du fichier fil = Range("A" & a).Value 'parcoure le nom du fichier à partir de la fin For b = Len(fil) To 1 Step -1 'et cherche le If Mid(fil, b, 1) = "" Then 'séparation Range("A" & a).Value = Left(fil, b - 1) Range("B" & a).Value = Right(fil, Len(fil) - b) 'et ne pas poursuivre avec le même fichier b = 1 End If Next b Next a End Sub
@+ FxM
Super_tonic wrote:
Bonjour à tous. J'aurais besoin d'un coup de main. Je ne sais pas du tout comment faire et par quoi commencer.
Je vous explique. Je parviens à Editer dans un fichier texte le contenu d'un répertoire, à partir de l'explorateur windows. (Source que j'ai trouvé dans les trucs de W98) "Command.com /c dir /b/s> c:Listing.txt" Donc avec un clic droit, j'ai un p'tit menu, "Lister" qui réalise un fichier texte appelé Listing.txt.
Bon jusque là tout va bien. Ensuite je l'ouvre dans Excel. Alors là commene le Hic.
Je converti pour séparer les champs sur un caractère donné : le ""
Mais en fait je voudrai avoir une macro qui sache lire le fichier texte, pour me mettre en col.A par exemple le chemin complet et en col.B juste le nom du fichier.
Parceque là tout ce retrouve mélanger. Comment je peux faire. Sachant que mes répertoires comportent des sous répertoires etc...
Si vous avez des idéees ou des trucs qui peuvent m'aider .... je suis dans les choux !
Ah oui juste un point : je suis pas un pro de VB, je me débrouille, enfin je bidouille
Merci Beaucoup
Bonjour,
A placer dans le module de la feuille qui contient les chemins :
Alt-F11, double-clic sur le nom de la feuille puis colle ce qui suit.
Execute-le en mode pas à pas (presse F8) pour voir si c'est OK. Su
oui, continue par F5.
Sub test()
'va parcourir la colonne A
For a = 1 To Range("A65536").End(xlUp).Row
'lit le nom du fichier
fil = Range("A" & a).Value
'parcoure le nom du fichier à partir de la fin
For b = Len(fil) To 1 Step -1
'et cherche le
If Mid(fil, b, 1) = "" Then
'séparation
Range("A" & a).Value = Left(fil, b - 1)
Range("B" & a).Value = Right(fil, Len(fil) - b)
'et ne pas poursuivre avec le même fichier
b = 1
End If
Next b
Next a
End Sub
@+
FxM
Super_tonic wrote:
Bonjour à tous.
J'aurais besoin d'un coup de main. Je ne sais pas du tout comment faire et
par quoi commencer.
Je vous explique.
Je parviens à Editer dans un fichier texte le contenu d'un répertoire, à
partir de l'explorateur windows. (Source que j'ai trouvé dans les trucs de
W98)
"Command.com /c dir /b/s> c:Listing.txt"
Donc avec un clic droit, j'ai un p'tit menu, "Lister" qui réalise un fichier
texte appelé Listing.txt.
Bon jusque là tout va bien. Ensuite je l'ouvre dans Excel.
Alors là commene le Hic.
Je converti pour séparer les champs sur un caractère donné : le ""
Mais en fait je voudrai avoir une macro qui sache lire le fichier texte,
pour me mettre en col.A par exemple le chemin complet et en col.B juste le
nom du fichier.
Parceque là tout ce retrouve mélanger. Comment je peux faire.
Sachant que mes répertoires comportent des sous répertoires etc...
Si vous avez des idéees ou des trucs qui peuvent m'aider .... je suis dans
les choux !
Ah oui juste un point : je suis pas un pro de VB, je me débrouille, enfin je
bidouille
A placer dans le module de la feuille qui contient les chemins : Alt-F11, double-clic sur le nom de la feuille puis colle ce qui suit.
Execute-le en mode pas à pas (presse F8) pour voir si c'est OK. Su oui, continue par F5.
Sub test() 'va parcourir la colonne A For a = 1 To Range("A65536").End(xlUp).Row 'lit le nom du fichier fil = Range("A" & a).Value 'parcoure le nom du fichier à partir de la fin For b = Len(fil) To 1 Step -1 'et cherche le If Mid(fil, b, 1) = "" Then 'séparation Range("A" & a).Value = Left(fil, b - 1) Range("B" & a).Value = Right(fil, Len(fil) - b) 'et ne pas poursuivre avec le même fichier b = 1 End If Next b Next a End Sub
@+ FxM
Super_tonic wrote:
Bonjour à tous. J'aurais besoin d'un coup de main. Je ne sais pas du tout comment faire et par quoi commencer.
Je vous explique. Je parviens à Editer dans un fichier texte le contenu d'un répertoire, à partir de l'explorateur windows. (Source que j'ai trouvé dans les trucs de W98) "Command.com /c dir /b/s> c:Listing.txt" Donc avec un clic droit, j'ai un p'tit menu, "Lister" qui réalise un fichier texte appelé Listing.txt.
Bon jusque là tout va bien. Ensuite je l'ouvre dans Excel. Alors là commene le Hic.
Je converti pour séparer les champs sur un caractère donné : le ""
Mais en fait je voudrai avoir une macro qui sache lire le fichier texte, pour me mettre en col.A par exemple le chemin complet et en col.B juste le nom du fichier.
Parceque là tout ce retrouve mélanger. Comment je peux faire. Sachant que mes répertoires comportent des sous répertoires etc...
Si vous avez des idéees ou des trucs qui peuvent m'aider .... je suis dans les choux !
Ah oui juste un point : je suis pas un pro de VB, je me débrouille, enfin je bidouille
Merci Beaucoup
FxM
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
Pour compléter, tu pourrais lire directement le contenu du répertoire
par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536
fichiers par page ;o))
Sub Filesearch1()
With Application.FileSearch
.NewSearch
.LookIn = "C:" '<== Put your directory here
.SearchSubFolders = True '<= setting to recurse directories
.Filename = "*.*"
.Execute
i = 0
For Each f In .FoundFiles
i = i + 1
Cells(i, 1).Select
ActiveCell.Value = f
For b = Len(f) To 1 Step -1
If Mid(f, b, 1) = "" Then
activecell.value = Left(fil, b - 1)
activecell.offset(0,1).Value = Right(fil, Len(fil) - b)
b = 1
End If
Next b
Next f
end with
End Sub
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
Super_tonic
Salut ! C'est génial ton truc ... Je vais le mettre en oeuvre. Si je rencontre des Pb je te tiens au courant. Merci vraiement Bcp
"FxM" a écrit dans le message news:
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
Salut !
C'est génial ton truc ... Je vais le mettre en oeuvre. Si je rencontre des
Pb je te tiens au courant.
Merci vraiement Bcp
"FxM" <fxmanceaux@chello.fr> a écrit dans le message news:
OI6f4KjaDHA.2344@TK2MSFTNGP09.phx.gbl...
Pour compléter, tu pourrais lire directement le contenu du répertoire
par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536
fichiers par page ;o))
Sub Filesearch1()
With Application.FileSearch
.NewSearch
.LookIn = "C:" '<== Put your directory here
.SearchSubFolders = True '<= setting to recurse directories
.Filename = "*.*"
.Execute
i = 0
For Each f In .FoundFiles
i = i + 1
Cells(i, 1).Select
ActiveCell.Value = f
For b = Len(f) To 1 Step -1
If Mid(f, b, 1) = "" Then
activecell.value = Left(fil, b - 1)
activecell.offset(0,1).Value = Right(fil, Len(fil) - b)
b = 1
End If
Next b
Next f
end with
End Sub
Salut ! C'est génial ton truc ... Je vais le mettre en oeuvre. Si je rencontre des Pb je te tiens au courant. Merci vraiement Bcp
"FxM" a écrit dans le message news:
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
Super_tonic
Salut Alors je viens de mettre en application tes 2 codes ! Le premier : Tout va super bien, ça marche plus que Nikel ! En plus etant donné que tu m'as tout bien expliqué dans le code, ben je comprend tout .... et ça fait du bien :-) Je te suis vraiement bcp Reconnaissant
Le second : Alors là par contre piti problème. J'ai un message d'erreur sur la ligne : ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b) -> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" a écrit dans le message news:
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
Salut
Alors je viens de mettre en application tes 2 codes !
Le premier :
Tout va super bien, ça marche plus que Nikel !
En plus etant donné que tu m'as tout bien expliqué dans le code, ben je
comprend tout .... et ça fait du bien :-)
Je te suis vraiement bcp Reconnaissant
Le second :
Alors là par contre piti problème.
J'ai un message d'erreur sur la ligne :
ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b)
-> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la
macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" <fxmanceaux@chello.fr> a écrit dans le message news:
OI6f4KjaDHA.2344@TK2MSFTNGP09.phx.gbl...
Pour compléter, tu pourrais lire directement le contenu du répertoire
par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536
fichiers par page ;o))
Sub Filesearch1()
With Application.FileSearch
.NewSearch
.LookIn = "C:" '<== Put your directory here
.SearchSubFolders = True '<= setting to recurse directories
.Filename = "*.*"
.Execute
i = 0
For Each f In .FoundFiles
i = i + 1
Cells(i, 1).Select
ActiveCell.Value = f
For b = Len(f) To 1 Step -1
If Mid(f, b, 1) = "" Then
activecell.value = Left(fil, b - 1)
activecell.offset(0,1).Value = Right(fil, Len(fil) - b)
b = 1
End If
Next b
Next f
end with
End Sub
Salut Alors je viens de mettre en application tes 2 codes ! Le premier : Tout va super bien, ça marche plus que Nikel ! En plus etant donné que tu m'as tout bien expliqué dans le code, ben je comprend tout .... et ça fait du bien :-) Je te suis vraiement bcp Reconnaissant
Le second : Alors là par contre piti problème. J'ai un message d'erreur sur la ligne : ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b) -> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" a écrit dans le message news:
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
michdenis
Bonjour Super_Tonic,
A ) Les variables de ta procédure ne sont pas déclarées. Cela ne fait pas planté ta procédure mais rend la lecture du code plus difficile.
Que représente la variable "fil" dans cette ligne de code. A moins que ce soit une variable déclaré à l'extérieur de cette procédure, "Fil" renvoie une valeur "Vide". Si cela est vrai, la fonction "Right" ne peut évaluer une valeur négative comme second argument : Len(fil)-b = - ? . En conséquence, cela provoque exactement le type d'erreur que tu as décrit.
Et si tu remplaçais, la variable "Fil" par "f " tout simplement !!!
P.S. Si dans le haut de ton module (première ligne) , tu inscrivait ceci : Option Explicit , cela éviterait ce type d'erreur puisque tu serais tenu de déclarer chacune de tes variables. Et en cas d'erreur d'orthographe dans l'écriture d'une de tes variables, tu obtiendrais un message d'erreur à cet effet.
Salutations!
"Super_tonic" a écrit dans le message de news: Salut Alors je viens de mettre en application tes 2 codes ! Le premier : Tout va super bien, ça marche plus que Nikel ! En plus etant donné que tu m'as tout bien expliqué dans le code, ben je comprend tout .... et ça fait du bien :-) Je te suis vraiement bcp Reconnaissant
Le second : Alors là par contre piti problème. J'ai un message d'erreur sur la ligne : ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b) -> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" a écrit dans le message news:
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
Bonjour Super_Tonic,
A ) Les variables de ta procédure ne sont pas déclarées. Cela ne fait pas planté ta procédure mais rend la lecture du code
plus difficile.
Que représente la variable "fil" dans cette ligne de code. A moins que ce soit une variable déclaré à l'extérieur de cette
procédure, "Fil" renvoie une valeur "Vide". Si cela est vrai, la fonction "Right" ne peut évaluer une valeur négative comme
second argument : Len(fil)-b = - ? . En conséquence, cela provoque exactement le type d'erreur que tu as décrit.
Et si tu remplaçais, la variable "Fil" par "f " tout simplement !!!
P.S. Si dans le haut de ton module (première ligne) , tu inscrivait ceci : Option Explicit , cela éviterait ce type d'erreur
puisque tu serais tenu de déclarer chacune de tes variables. Et en cas d'erreur d'orthographe dans l'écriture d'une de tes
variables, tu obtiendrais un message d'erreur à cet effet.
Salutations!
"Super_tonic" <nospam-not@caramail.com> a écrit dans le message de news:OAWTbjtaDHA.3768@tk2msftngp13.phx.gbl...
Salut
Alors je viens de mettre en application tes 2 codes !
Le premier :
Tout va super bien, ça marche plus que Nikel !
En plus etant donné que tu m'as tout bien expliqué dans le code, ben je
comprend tout .... et ça fait du bien :-)
Je te suis vraiement bcp Reconnaissant
Le second :
Alors là par contre piti problème.
J'ai un message d'erreur sur la ligne :
ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b)
-> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la
macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" <fxmanceaux@chello.fr> a écrit dans le message news:
OI6f4KjaDHA.2344@TK2MSFTNGP09.phx.gbl...
Pour compléter, tu pourrais lire directement le contenu du répertoire
par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536
fichiers par page ;o))
Sub Filesearch1()
With Application.FileSearch
.NewSearch
.LookIn = "C:" '<== Put your directory here
.SearchSubFolders = True '<= setting to recurse directories
.Filename = "*.*"
.Execute
i = 0
For Each f In .FoundFiles
i = i + 1
Cells(i, 1).Select
ActiveCell.Value = f
For b = Len(f) To 1 Step -1
If Mid(f, b, 1) = "" Then
activecell.value = Left(fil, b - 1)
activecell.offset(0,1).Value = Right(fil, Len(fil) - b)
b = 1
End If
Next b
Next f
end with
End Sub
Que représente la variable "fil" dans cette ligne de code. A moins que ce soit une variable déclaré à l'extérieur de cette procédure, "Fil" renvoie une valeur "Vide". Si cela est vrai, la fonction "Right" ne peut évaluer une valeur négative comme second argument : Len(fil)-b = - ? . En conséquence, cela provoque exactement le type d'erreur que tu as décrit.
Et si tu remplaçais, la variable "Fil" par "f " tout simplement !!!
P.S. Si dans le haut de ton module (première ligne) , tu inscrivait ceci : Option Explicit , cela éviterait ce type d'erreur puisque tu serais tenu de déclarer chacune de tes variables. Et en cas d'erreur d'orthographe dans l'écriture d'une de tes variables, tu obtiendrais un message d'erreur à cet effet.
Salutations!
"Super_tonic" a écrit dans le message de news: Salut Alors je viens de mettre en application tes 2 codes ! Le premier : Tout va super bien, ça marche plus que Nikel ! En plus etant donné que tu m'as tout bien expliqué dans le code, ben je comprend tout .... et ça fait du bien :-) Je te suis vraiement bcp Reconnaissant
Le second : Alors là par contre piti problème. J'ai un message d'erreur sur la ligne : ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b) -> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" a écrit dans le message news:
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
FxM
Bonsoir,
Comme te l'a écrit Denis, change 'fil' en 'f' et ça roule. J'ai regroupé deux procédures sans vérifier jusqu'au bout la cohérence des variables. Sorry ;o(
@+ FxM
Super_tonic wrote:
Salut Alors je viens de mettre en application tes 2 codes ! Le premier : Tout va super bien, ça marche plus que Nikel ! En plus etant donné que tu m'as tout bien expliqué dans le code, ben je comprend tout .... et ça fait du bien :-) Je te suis vraiement bcp Reconnaissant
Le second : Alors là par contre piti problème. J'ai un message d'erreur sur la ligne : ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b) -> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" a écrit dans le message news:
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub
@+ FxM
Bonsoir,
Comme te l'a écrit Denis, change 'fil' en 'f' et ça roule.
J'ai regroupé deux procédures sans vérifier jusqu'au bout la cohérence
des variables. Sorry ;o(
@+
FxM
Super_tonic wrote:
Salut
Alors je viens de mettre en application tes 2 codes !
Le premier :
Tout va super bien, ça marche plus que Nikel !
En plus etant donné que tu m'as tout bien expliqué dans le code, ben je
comprend tout .... et ça fait du bien :-)
Je te suis vraiement bcp Reconnaissant
Le second :
Alors là par contre piti problème.
J'ai un message d'erreur sur la ligne :
ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b)
-> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la
macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" <fxmanceaux@chello.fr> a écrit dans le message news:
OI6f4KjaDHA.2344@TK2MSFTNGP09.phx.gbl...
Pour compléter, tu pourrais lire directement le contenu du répertoire
par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536
fichiers par page ;o))
Sub Filesearch1()
With Application.FileSearch
.NewSearch
.LookIn = "C:" '<== Put your directory here
.SearchSubFolders = True '<= setting to recurse directories
.Filename = "*.*"
.Execute
i = 0
For Each f In .FoundFiles
i = i + 1
Cells(i, 1).Select
ActiveCell.Value = f
For b = Len(f) To 1 Step -1
If Mid(f, b, 1) = "" Then
activecell.value = Left(fil, b - 1)
activecell.offset(0,1).Value = Right(fil, Len(fil) - b)
b = 1
End If
Next b
Next f
end with
End Sub
Comme te l'a écrit Denis, change 'fil' en 'f' et ça roule. J'ai regroupé deux procédures sans vérifier jusqu'au bout la cohérence des variables. Sorry ;o(
@+ FxM
Super_tonic wrote:
Salut Alors je viens de mettre en application tes 2 codes ! Le premier : Tout va super bien, ça marche plus que Nikel ! En plus etant donné que tu m'as tout bien expliqué dans le code, ben je comprend tout .... et ça fait du bien :-) Je te suis vraiement bcp Reconnaissant
Le second : Alors là par contre piti problème. J'ai un message d'erreur sur la ligne : ActiveCell.Offset(0, 1).Value = Right(fil, Len(fil) - b) -> Erreur d'exécution 5 : Argument ou appel de procédure incorect.
Et la feuille Excel reste vierge. Pourtant lors de l'écution pas à pas la macro trouve un premier fichier puis plus aucun. Et enfin l'efface.
Voilà
Vraiement encore merci !
"FxM" a écrit dans le message news:
Pour compléter, tu pourrais lire directement le contenu du répertoire par VBA (en référence ma réponse de12h23 au message de dan à 12h14) :
Une limite : comme tu copies dans une feuille -> pas plus de 65536 fichiers par page ;o))
Sub Filesearch1() With Application.FileSearch .NewSearch .LookIn = "C:" '<== Put your directory here .SearchSubFolders = True '<= setting to recurse directories .Filename = "*.*" .Execute i = 0 For Each f In .FoundFiles i = i + 1 Cells(i, 1).Select ActiveCell.Value = f For b = Len(f) To 1 Step -1 If Mid(f, b, 1) = "" Then activecell.value = Left(fil, b - 1) activecell.offset(0,1).Value = Right(fil, Len(fil) - b) b = 1 End If Next b Next f end with End Sub