Problème : l'indice n'appartient pas à la sélection erreur 9
Résolu
Lordknight
Messages postés
11
Statut
Membre
-
Lordknight Messages postés 11 Statut Membre -
Lordknight Messages postés 11 Statut Membre -
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
Pouvez-vous m'aider ? (PS: ceci n'est pas le sub complet, celui-ci présentant 3 cas différents mais tous se ressemblent)
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
Bonjour,
Une idée serait de remplacer :
Par :
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
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
Lordknight
Messages postés
11
Statut
Membre
Merci beaucoup pour ton aide ^^