Erreur d'exécution 9

Erreur d'exécution 9 - VB/VBA/VBS - Programmation

Marsh Posté le 29-08-2012 à 17:36:53    

Bonjour,
 
Voici le début du code avec lequel j'ai un problème :
 
Sub Macro1()
 
' Ouverture fichier à analyser
 
    repertoire = Worksheets("SUIVI EXE" ).Cells(4, 4).Value
    fichier = Worksheets("SUIVI EXE" ).Cells(5, 4).Value
    Application.Workbooks.Open "" & repertoire & "\" & fichier & ".xls"
 
' Initialisation des variables
 
    'l est la ligne en cours d'analyse sur feuille 1
    l = 3
    'l_2 est la ligne d'écriture sur feuille 2
    l_2 = 2
     
' Création des feuilles de synthèse
 
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets("Feuil1" ).Select
    Sheets("Feuil1" ).Name = "FCE DBT-RBT"
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets("Feuil2" ).Select
    Sheets("Feuil2" ).Name = "FCE VLT"
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets("Feuil3" ).Select
    Sheets("Feuil3" ).Name = "FCE RDT"
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets("Feuil4" ).Select
    Sheets("Feuil4" ).Name = "FCE OH"
     
' Mise en place du filtre
 
    Rows("2:2" ).Select
    Selection.AutoFilter
     
' Sélection OL exclusive
 
    ActiveSheet.Range("$A$2:$AH$387" ).AutoFilter Field:=1, Criteria1:="<>*PRO*" _
        , Operator:=xlAnd, Criteria2:="<>*PRA*"
         
' Tri alphabétique
 
    ActiveWorkbook.Worksheets("SUIVI EXE" ).AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("SUIVI EXE" ).AutoFilter.Sort.SortFields.Add Key:= _
        Range("A2:A387" ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("SUIVI EXE" ).AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
     
' Traitement FCE DBT-RBT
 
    Worksheets("SUIVI EXE" ).Activate
    fiche = Worksheets("SUIVI EXE" ).Cells(l, 1).Value
    compare = Left(Worksheets("SUIVI EXE" ).Cells(l, 2).Value, 8)
    Worksheets(2).Activate
    If compare = "IDEBK-2C" Then
        Worksheets("FCE DBT-RBT" ).Cells(l_2, 2).Value = fiche
        l_2 = l_2 + 1
    End If
     
    l = l + 1
     
End Sub
 
 
J'ai alors le message : "Erreur d'exécution 9, l'indice n'appartient pas à la sélection".
Avez-vous une idée sur la cause de ce message et sur sa résolution éventuelle?
 
Merci par avance.

Reply

Marsh Posté le 29-08-2012 à 17:36:53   

Reply

Marsh Posté le 29-08-2012 à 23:52:40    

sur quelle ligne pointe le debuger?
 
par hasard, "Worksheets("SUIVI EXE" ).Cells(l, 2).Value" à bien toujours au moins 8 charactères, jamais vide?
 
ligne

Code :
  1. compare = Left(Worksheets("SUIVI EXE" ).Cells(l, 2).Value, 8)


Reply

Marsh Posté le 30-08-2012 à 08:59:53    

Le debuger ne s'affiche pas. Le message s'affiche avant lui, sans possibilité de l'utiliser.
Oui "Worksheets("SUIVI EXE" ).Cells(l, 2).Value" est bien jamais vide.

Reply

Marsh Posté le 30-08-2012 à 20:49:50    

Donc il va falloir le faire "à la main"
 
Ajoute des

Code :
  1. msgbox "1"
  2. msgbox "2"
  3. msgbox "3"


 
Pour voir jusqu'où ton code s’exécute.
et quelle instruction foire
 
sinon, ici un gars dit qu'il serait prudent d'ajouter "Thisworkbook." devant tes "worksheets("
 
 
edit : sinon, c'est pas hasardeux ça dans ta macro?

Code :
  1. Worksheets(2).Activate


 
Edit 2: Il semble que tu ouvre un autre fichier excel en même temps.
Tu devrais tenter de faire  
 

Code :
  1. dim remote as workbook
  2. Set remote = Application.Workbooks.Open "" & repertoire & "\" & fichier & ".xls"


 
Et ensuite quand tu utilise des sheets(.... de l'un ou l'autre :  
remote.worksheets(...........
ou  
Thisworkbook.worksheets(........
 
Sinon excel ne va pas savoir trouver/identifier les feuilles dont tu as besoin.
 


Message édité par Arl Guhr le 30-08-2012 à 21:03:43
Reply

Sujets relatifs:

Leave a Replay

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