Erreur d'éxécution 9 l'indice n'appartient pas à la selection

Fermé
siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 - Modifié par siamens_duj le 6/11/2015 à 09:28
siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 - 6 nov. 2015 à 11:19
Bonjour,

Depuis deux jours je suis un problème que je n'arrive pas à résoudre.
Quand j'éxécute mon code il me met "erreur d'éxécution 9 l indice n'appartient pas à la selection". Et j'ai l'impression que ça me fait planter mon code.
Mon classeur est bien enregistré en "Prennant en charge les macros".

Je vous joins mon code :

Private Sub CommandButton1_Click()

Dim Reference As String
Dim i As Integer
BLeft = 2
BTop = 40
BWidth = 72
BHeight = 24
Dim obj As Object
Dim Code As String

Reference = InputBox("Saisie de la référence de la pièce : ", Recherche)

For i = 5 To 200

Do While Reference = Cells(i, 4).Value 'Then
Cells(i, 4).EntireRow.Font.Color = RGB(4, 139, 154)
Set obj = CreateObject("Excel.Application")
Set obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=2, Top:=60, Width:=72, Height:=24)
obj.Name = "BoutonTest"

'Le texte de la macro
Code = "Sub BoutonTest_Click()" & vbCrLf
Code = Code & "Call Tester" & vbCrLf
Code = Code & "End Sub"
'Ajoute la macro en fin de module feuille
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
.insertlines .CountOfLines + 1, Code
End With

With BoutonTest
BoutonTest.Visible = True
End With

Loop
Next i

If Reference <> Cells(i, 4).Value Then
MsgBox "Cette référence n'existe pas"
Exit Sub

End If

End Sub


Private Sub BoutonTest_click()

Dim i As Integer
For i = 5 To 200

If Cells(i, 4).EntireRow.Font.Color = RGB(4, 139, 154) Then
Cells(i, 4).EntireRow.Font.Color = RGB(0, 0, 0)
End If

Next i

With BoutonTest
BoutonTest.Visible = False

End With

End Sub


Merci pour votre aide.

1 réponse

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
6 nov. 2015 à 10:23
Bonjour,

Tu n'aurais pas fait une boucle infinie avec ton While ?

A+
0
siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 7
6 nov. 2015 à 10:30
Bonjour et merci pour votre réponse.

Ce n'est visiblement pas cela car quand je change le While et If il se passe la même chose ..
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
6 nov. 2015 à 10:33
Et obj qui est défini deux fois, c'est normal ?
Excel plante lamentablement ou il te propose le débogueur ? Dans ce dernier cas, quelle ligne est surlignée en jaune ?
Le but de ton code est d'ailleurs très mystérieux... Faire apparaître du code VBA dans une feuille ?!
0
siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 7
Modifié par siamens_duj le 6/11/2015 à 11:22
J'ai oublié de mettre Set obj = CreateObject("Excel.Application") en commentaire, c'était une des nombreuses chose que j'avais testé .. Mais j'ai toujours "erreur d'éxécution 9 ..."
Excel plante, il ne me propose pas le débogueur, juste "Fin" donc pas de ligne en jaune.
Mon code sert en fait à dire : Si la valeur entré dans l'inputBox est égal à la valeur de la cellule (i, 4) alors il faut créé un bouton qui sera visible et mettre l'écriture en couleur bleu de toute la ligne où la valeur correspond (à ce qui est entré dans l'inputBox).
Le bouton qui est créé dans cette première partie de code est ensuite codé à son tour dans la deuxième partie du code.
Il dit que quand on clique sur le bouton, si l'écriture de la ligne est bleu alors il faut la mettre en noir et mettre le bouton en invisible.
0