lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007
-
16 oct. 2006 à 10:56
lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007
-
16 oct. 2006 à 11:56
Salut à tous,
J'ai écrit un petit bout de code pour éxécuter une macro sur tous les fichiers d'un répertoire mais je n'arrive pas à récupérer le bon type pour ma sous macro. Je cherche à obtenir un chemin de fichier (String donc...) et je ne sais pas ce que j'obtiens à la place avec .FoundFiles(i).
Voilà mon code :
Sub AutoTousFichiers()
Dim F
With Application.FileSearch
.NewSearch
.LookIn = "CI:\Private_ISP\PPM\SEPTEMBER 2006\Fichiers Contributeurs"
.Execute
On Error Resume Next
For i = 1 To .FoundFiles.Count
Call AutoUnFichier(.FoundFiles(i))
Next
End With
End Sub
Sub AutoUnFichier(X As String)
Dim y As String
Dim i As Integer
Dim Plage As Range
Workbooks.Open Filename:="X"
Plage = "A:A"
For i = 1 To Plage.Count
y = IsNumeric(Ai)
Next
If y = True Then
LigneCopiee = Rows("i:i").Copy
LigneCopiee.Insert (xlShiftDown)
End If
Workbooks("X").Close SaveChanges:=False
End Sub
Si vous voyez comment améliorer, n'hésitez pas (je ne suis pas sûr de ma procédure de copie :)) !!
lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007 16 oct. 2006 à 11:56
En fait, erreur de débutant, je n'avais pas mis la sous procédure dans le même module : ça ne pouvait pas marcher!!!
Mais ça n'a pas été un post inutile puisque j'ai corrigé quelques erreurs quand même. Je vais faire un nouveau post pour le problème qui se pose maintenant...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 16 oct. 2006 à 11:07
Tu as mis une variable-paramètre X As String
Celle-ci contient, disons, "NomFichier.txt"
En écrivant Workbooks.Open Filename:="X", tu lui rajoutes des
guillemets. À ce moment-là tu cherches à ouvrir le fichier "X" et non
pas "NomFichier.txt"
Il faut donc écrire
Workbooks.Open Filename:=X
MPi
Vous n’avez pas trouvé la réponse que vous recherchez ?
lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007 16 oct. 2006 à 11:14
Merci à toi aussi.
Ca résoud un de mes futurs problèmes mais... j'ai toujours la même erreur :) Je n'ai pas essayé de la faire tourner puisque j'ai des erreurs de déboguage.
Il y avait des erreurs évidentes que j'ai rectifiées ci dessous :
Sub AutoTousFichiers()
Dim F
With Application.FileSearch
.NewSearch
.LookIn = "CI:\Private_ISP\PPM\SEPTEMBER 2006\Fichiers Contributeurs"
.Execute
On Error Resume Next
For i = 1 To .FoundFiles.Count
Call AutoUnFichier(.FoundFiles(i))
Next
End With
End Sub
==========================================
Sub AutoUnFichier(X As String)
Dim y As Boolean
Dim i As Integer
Dim Plage As Range
B0mbJacK
Messages postés141Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention25 octobre 20061 16 oct. 2006 à 11:24
Lu
ptite parenthèse qui répond pas à ta kestion
If y = True Then
LigneCopiee = Rows("i:i").Copy
tu utilise ta variable Y comme un booleen, alors ke tu déclare Y en String!!!
il faut plutot mettre :
Dim Y as Booleen
Y = False
apres
explique moi ca --> For i = 1 To Plage.Count
y = IsNumeric(Ai)
Next
pourkoi faire une boucle dans Plage si tu utilise pas les valeurs???
et c'est ki Ai?
tu veux ptet faire ca ?
For i = 1 To Plage.Count
y = IsNumeric(Plage("A" & i))
Next i
mais meme là, ta boucle ressemble à rien
ton "y" pendant toute la durée de la boucle va etre en True & False à certain moment,kel est l'interêt de cette boucle ???
lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007 16 oct. 2006 à 11:42
Merci pour ta réponse.
Tu as raison, mon nom de dossier n'était pas bon...mais ça ne change rien, toujours la même erreur Expected variable or procedure, not module à hauteur de Call AutoUnFichier(.FoundFiles(i)) pendant le debugging.
Je ne peux pas utiliser de breakpoint puisqu'il n'arrive même pas à compiler mon prog.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 16 oct. 2006 à 11:49
C'est bizarre car chez moi il marche (il plante plus loin).
essaye peut-etre avec Call AutoUnFichier(Application.FileSearch.FoundFiles(i))
Quelque fois le with n'est pas toujours pris en compte avec certaines fonctions, il faut repréciser la totalité du nom (cas notamment de Printer sous VB6)
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
lycaon_58
Messages postés31Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention 1 février 2007 16 oct. 2006 à 11:50
B0mbJack,
Je crois avoir corrigé dans la suite ce dont tu me parles. Effectivement j'avais mis ma boucle d'action sur y en dehors du For, ce qui ne servait à rien :) Merci pour la correction de syntaxe également sur Ai.