Problème de type de variable

Résolu
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007 - 16 oct. 2006 à 10:56
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Derniè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 :)) !!

Merci à tous

Lycaon

10 réponses

lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Derniè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...

Merci encore à tous

Lycaon
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 oct. 2006 à 11:00
Salut,
D'apres ce que je viens de voir dans Excel .FoundFiles(i) renvoie bien un type String.

Mais au fait as tu une erreur ou bien alors cela ne fait pas ce que tu souhaites.

@+,   Ju£i?n
0
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007
16 oct. 2006 à 11:04
J'ai une erreur quand je compile

Expected variable or procedure, not module à hauteur de Call AutoUnFichier(.FoundFiles(i)).

Merci de ta réponse

Lycaon
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Derniè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


Plage = "A:A"


Workbooks.Open Filename:=X




        For i = 1 To Plage.Count
       
        y = IsNumeric(Ai)
       
            If y = True Then


            LigneCopiee = Rows("i:i").Copy


            LigneCopiee.Insert (xlShiftDown)


            End If


        Next
   
Workbooks(X).Close SaveChanges:=False


End Sub

Merci de votre aide

Lycaon
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 oct. 2006 à 11:21
Met un point d'arret sur For i= .... et regarde à quoi est égal FoundFiles.Count. A mon avis il est égal à 0

Le problème ne viendrait par hasard de .LookIn = "C I :\Private_ISP\PPM\SEPTEMBER 2006\Fichiers Contributeurs"

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
B0mbJacK Messages postés 141 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 25 octobre 2006 1
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 ???
0
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Derniè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.

++

Lycaon
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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 #
0
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Derniè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.
0
Rejoignez-nous