Problème : l'indice n'appartient pas à la sélection erreur 9

Résolu/Fermé
Lordknight Messages postés 5 Date d'inscription vendredi 4 juillet 2014 Statut Membre Dernière intervention 23 juillet 2014 - 8 juil. 2014 à 11:57
Lordknight Messages postés 5 Date d'inscription vendredi 4 juillet 2014 Statut Membre Dernière intervention 23 juillet 2014 - 8 juil. 2014 à 16:56
Bonjour,

Novice en VBA, j'ai un programme me permettant de récupérer les données dans un classeur EXCEL avant de les placer dans un autre classeurr. Malheureusement, quand je lance le programme, il me lance l'erreur 9
La ligne contenant l'erreur (même si je pense qu'il y a plusieurs lignes) est celle en gras

Private Sub newentry()

' -------------------------------------------------------------------
' - Ecriture des données dans la fenêtre de verification
' -------------------------------------------------------------------

' 1- Lecture des informations de la fenêtre de saisie

tablogi1
loaddata
loadqust

Dim a As Integer
Dim d As String
Dim c As Integer
Dim wbsn As Excel.Worksheet
Dim flg As Boolean

xlsnom = ThisWorkbook.Name
flg = False

For Each wbsn In ThisWorkbook.Sheets
If wbsn.Name = "summary" Then flg = True
Next

'If flg = True Then
'UserForm8.TextBox14.Text = CStr(ThisWorkbook.Sheets("summary").Cells(16, 3))
'Else
'UserForm8.TextBox14.Value = ""
'End If

'UserForm8.OptionButton1.Value = False
'UserForm8.OptionButton2.Value = False
'UserForm8.OptionButton3.Value = False
'UserForm8.CheckBox1.Value = False
'UserForm8.TextBox13.Value = ""

Erase recref
Erase recorder
Erase recquanty
Erase recserif
Erase recserit
Erase reccolor

Select Case ThisWorkbook.Worksheets("Data").Cells(10, 4)

Case "Serial Number" ' rapport sécu

'UserForm8.TextBox4.Text = "-" 'Numero de container
UserForm8.TextBox5.Text = ThisWorkbook.Worksheets("Data").Cells(12, 3) 'Numero d homologation
UserForm8.TextBox7.Text = ThisWorkbook.Worksheets("Data").Cells(4, 8) 'Nom fournisseur
UserForm8.TextBox8.Text = ThisWorkbook.Worksheets("Data").Cells(6, 8) 'Date d'inspection
UserForm8.TextBox9.Text = ThisWorkbook.Worksheets("Data").Cells(5, 8) 'Nom port
UserForm8.TextBox3.Text = ThisWorkbook.Worksheets("Data").Cells(7, 11) 'Année de collection
UserForm8.TextBox12.Text = ThisWorkbook.Worksheets("Data").Cells(3, 3) 'Nom produit
a = 12
UserForm8.ComboBox1.Clear

Do Until ThisWorkbook.Sheets("Data").Cells(a, 1) = ""
UserForm8.ComboBox1.AddItem (CStr(a - 11))
recorder(a - 11) = ThisWorkbook.Sheets("Data").Cells(a, 1) ' numero de commande
recref(a - 11) = ThisWorkbook.Sheets("Data").Cells(a, 2) ' refrence produit
recquanty(a - 11) = ThisWorkbook.Sheets("Data").Cells(a, 8) ' Quantité
recserif(a - 11) = ThisWorkbook.Sheets("Data").Cells(a, 4) ' Debut numero de serie
recserit(a - 11) = ThisWorkbook.Sheets("Data").Cells(a, 6) ' Fin numero de serie

' recherche couleur dans la base de données structure de gamme
d = UserForm8.TextBox3.Text
For c = 1 To nbdsref
If refds(c) = recref(a - 11) And rangeds(c) = d Then
reccolor(a - 11) = coulds(c)
End If
Next c

'Recherche ref container dans la base logistique
For c = 1 To logirec
If logiref(c) = recorder(a - 11) Then
reccont(a - 11) = logicont(c)
End If
Next c

'Recherche qust dans la base qust
For c = 1 To qustrec
If qustref(c) = recref(a - 11) Then
qustprod(a - 11) = qust(c)
End If
Next c

a = a + 1
Loop

Pouvez-vous m'aider ? (PS: ceci n'est pas le sub complet, celui-ci présentant 3 cas différents mais tous se ressemblent)

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 9/07/2014 à 07:54
Bonjour,

Une idée serait de remplacer :
UserForm8.TextBox5.Text = ThisWorkbook.Worksheets("Data").Cells(12, 3)  'Numero d homologation
UserForm8.TextBox7.Text = ThisWorkbook.Worksheets("Data").Cells(4, 8)   'Nom fournisseur
UserForm8.TextBox8.Text = ThisWorkbook.Worksheets("Data").Cells(6, 8)   'Date d'inspection
UserForm8.TextBox9.Text = ThisWorkbook.Worksheets("Data").Cells(5, 8)   'Nom port
UserForm8.TextBox3.Text = ThisWorkbook.Worksheets("Data").Cells(7, 11)  'Année de collection
UserForm8.TextBox12.Text = ThisWorkbook.Worksheets("Data").Cells(3, 3)  'Nom produit

Par :
With ThisWorkbook.Worksheets("Data")
    UserForm8.TextBox5.Text = .Cells(12, 3)  'Numero d homologation
    UserForm8.TextBox7.Text = .Cells(4, 8)   'Nom fournisseur
    UserForm8.TextBox8.Text = .Cells(6, 8)   'Date d'inspection
    UserForm8.TextBox9.Text = .Cells(5, 8)   'Nom port
    UserForm8.TextBox3.Text = .Cells(7, 11)  'Année de collection
    UserForm8.TextBox12.Text = .Cells(3, 3)  'Nom produit
End With


Le code erreur 9 survient lorsque VBA n'arrive pas à accéder à un objet. Ici je suppose qu'il n'arrive pas à accéder à la feuille Data. Les possibilités sont nombreuses : feuille masquée, mal nommée, Userform en mode modal et feuille non active, etc... Par conséquent, référencer l'objet auquel on veut accéder dans un bloc With nous permet d'y accéder, sauf erreur dans l'orthographe du nom...

ça vaut donc le coup de tenter...
Vergesst nicht : Wer Unrecht lange geschehen lässt, bahnt dem nächsten den Weg. » 14 septembre 1992,Willy Brandt
1
Lordknight Messages postés 5 Date d'inscription vendredi 4 juillet 2014 Statut Membre Dernière intervention 23 juillet 2014
8 juil. 2014 à 16:56
Merci beaucoup pour ton aide ^^
0