[VBA] Erreur out of range sur script

Erreur out of range sur script [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 13-07-2009 à 12:19:17    

Bonjour,
 
Je suis actuellement entrain de coder une macro qui permettrait de rechercher des macros dans les fichiers xls sur un disque dur, puis les lister.
Je travail par étape, pour l'instant je test l'ouverture, l'écriture (d'une simple bonjour), la sauvegarde, puis la fermeture du fichier destinataire
Actuellement je suis bloqué sur une erreur "Run-time error '9' : Subscript out of range" sur la ligne 72:
 
 

Code :
  1. Sub MacroTest()
  2. ' on efface les colonnes du resultat precedent
  3. Columns(1).Clear
  4. Columns(2).Clear
  5. Columns(3).Clear
  6. Columns(4).Clear
  7. Columns(5).Clear
  8. ' déclaration des variables
  9. Dim uneAppli As Excel.Application
  10. Dim leClasseur As Excel.Workbook
  11. Dim laSheet As Excel.Worksheet
  12. Dim unClasseur As Excel.Workbook
  13. Dim uneSheet As Excel.Worksheet
  14. Dim leRepertoireFichier As String
  15. Dim leNom As String
  16. Dim laTaille As Integer
  17. Dim leType As String
  18. Dim i As Integer
  19. Dim CountFile As Integer
  20. ' ouverture de l'application
  21. Set uneAppli = CreateObject("Excel.Application" )
  22. ' ouverture du classeur
  23. Set leClasseur = uneAppli.Workbooks.Open("P:\Test\liste_macro_G.xls" )
  24. ' mise en place de la premiere feuille du fichier
  25. Set laSheet = leClasseur.Worksheets("test" )
  26. ' debut de la boucle
  27. ' taille total de la recherche à indexé dans variable CountFile
  28. ' for i = 1 to .FoundFiles.Count step 1
  29.        
  30.         ' on active le classeur/feuille dans lequel on recherche le fichier
  31.         ' leClasseur.Activate
  32.         Worksheets("test" ).Activate
  33.        
  34.        
  35.         ' on effectue le test if macro inside
  36.         ' code à modifier, apparement le VBComponents permets de détecter de la macro inside
  37.         ' ActiveWorkbook.VBProject.VBComponents.  ActiveWorkbook.VBProject.VBComponents("Module1" )
  38.        
  39.        
  40.        
  41.         ' on récupere les differentes infos dont on a besoin
  42.         ' recupere le nom du fichier
  43.         ' Set leNom = ThisWorkbook.Name ---------------< a debloquer
  44.        
  45.         ' recupere la taille du fichier
  46.         ' Debug.Print FileLen("nomdufichier" )
  47.         ' Set laTaille = Workbooks(ActiveWorkbook.Name).FullName
  48.         ' Set laTaille = ThisWorkbook.FullName ---------------< a debloquer
  49.        
  50.         ' recupere le type du fichier <------- COMMENT QUALIFIER TYPE FICHIER
  51.         ' Set leType = michel
  52.        
  53.         ' recupere le repertoire du fichier
  54.         ' GetRelativePath
  55.         ' Set leRepertoire = Workbooks(ActiveWorkbook.Name).FullName ---------------< a debloquer
  56.        
  57.        
  58.        
  59.         Workbooks("P:\Test\liste_macro_G.xls" ).Worksheets("test" ).Cells(i, 1).Value = "bonjour"
  60.         'ThisWorkbook.Worksheets("test" ).Cells(i, 1).Value = "bonjour"
  61.        
  62.         Set leNom = "bonsoir"
  63.        
  64.         ' on ecrit dans la cellule du classeurRef
  65.         ' With ThisWorkbook.Sheets("test" )
  66.         With Workbooks("P:\Test\liste_macro_G.xls" ).Worksheets("test" )
  67.             .Cells(i, 1).Value = leNom
  68.             .Cells(i, 2) = leType
  69.             .Cells(i, 3) = laTaille
  70.             .Cells(i, 4) = leRepertoire
  71.             ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 5)
  72.             .Cells(i, 5) = leRepertoire
  73.         End With
  74.        
  75.        
  76.         ' on ferme le classeur dans lequel on recherche
  77.         ThisWorkbook.Close SaveChanges:=True
  78. ' fin de la boucle
  79. ' next
  80. ThisWorkbook.Close SaveChanges:=True
  81. End Sub


 
 
Vous avez une idée, car perso je n'arrive pas à trouver ce que veut dire l'erreur ???
Merci

Reply

Marsh Posté le 13-07-2009 à 12:19:17   

Reply

Marsh Posté le 13-07-2009 à 13:32:28    

Bonjour,
la ligne 40 est en commentaire, est-volontaire??
 
Cordialement

Reply

Marsh Posté le 13-07-2009 à 13:34:08    

oui c'est normal, je fais un test sans la boucle, pour l'instant j'essaye juste de pouvoir ouvrir, ecrire, sauvegarder puis fermer
 
mais suis encore bloqué à l'ouverture..

Reply

Marsh Posté le 13-07-2009 à 13:36:47    

Il faut donner une valeur à i

Reply

Marsh Posté le 13-07-2009 à 14:00:52    

ah oui effectivement  
 
je test
 
edit: toujours la meme erreur sur
 
Workbooks("P:\Test\liste_macro_G.xls" ).Worksheets("test" ).Cells(1, 1).Value = "bonjour"
 
malgré le "i"


Message édité par replay le 13-07-2009 à 14:04:18
Reply

Marsh Posté le 13-07-2009 à 18:05:29    

Il est ouvert ton workbook et je pense que tu peux utiliser "leclasseur", je n'ai pas le temps d'approfondir, mais essaye cela en attendant:
 
Workbooks("liste_macro_G.xls" ).Worksheets("test" ).Cells(1, 1).Value = "bonjour"

Reply

Marsh Posté le 15-07-2009 à 12:51:03    

merci de ta réponse
j'ai réussi à débugguer
c'était dû au fait que j'esssayais d'ouvrir un classeur déjà ouvert...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed