Probleme d'erreur

O

olette

Guest
J'ai crée un userform et je n'arrive pas à l'ouvrir de ma macro car le message d'erreur suivant apparait :
'Erreur d'execution '9'
L'indice de sélection n'appartien pas à la sélection

Je suis completement coincé car lorsque je lence le débogueur, il me pointe ma macro, macro qui est standard puisque qu'elle ne comporte que le ligne suivante : UserForm4.Show ....


Merci de votre aide

Olette
 
@

@+Thierry

Guest
Salut Odette,

Tu as le coup classique du Userform qui contient des Controls ActiveX qui ont : soit été supprimés, soit été renommés, soit tu as une faute de frappe dans une référence à un des controls... Soit encore tu n'as pas précisé suffisamment d'info sur quelle endroit du classeur, le UserForm doit travailler...

Partie => "Nom des Controls"
Par Exemple :

Private Sub UserForm_Initialize()
TextBox1 = "Toto"
TextBox2 = "Zaza"
TexxBox3 = "Lulu"
End Sub

En fait tu as une faute de frappe, mais tu pourrait avoir par la suit décidé de nommer tes TextBox (ou d'autres controls of course) d'une autre manière... Exemple TxbToto, TxbZaza... Auquel cas tu auras aussi ce problème...

Et bien évidemment, Idem si tu as supprimé une des ActiveX depuis le mode design du UserForm, alors que le code y fait référence....

Attention aussi ce n'est pas qu'en initialise, c'est dans tout le code que tu dois faire attention... et même dans les macros évènementielles "Private Sub TextBox1_Change()".... Si TextBox1 existe plus....

Sinon de toute façon un moyen d'éviter ces désagrément est de d'avoir en extra top de module cette instruction :

Option Explicit

Qui évite les fautes de frappes, car les variables doivent toutes être déclarées (Dim MaVariable As String...) et si en complialnt VBA trouve "TexxBox2" il va d'aboir réagir comme si "TexxBox2" était une variable non déclarée....

D'où l'importance réelle d'utiliser Option Explicit dans toute macro !!

Une dernière chose, quand tu es en mode VBE, tu peux lancer directement le UserForm en cliquant sur Menu Exécuter (Run)... Là au moins tu ne stoppera pas sur l'instruction UserFormX.Show....


Partie => "Mauvais référencement Classeur/feuille"

Il y a encore une autre possibilité d'erreur... Tu lances ton UserForm qui doit pointer sur une feuille précise, mais tes instructions ne la précisent pas et par défaut, VBA va pointer sur la feuille active... Qui, elle, ne contient pas l'info que doit retourner un (ou plusieurs) des controls activeX.... Si tu travailles en Multi-Classeur c'est pire encore... Il faut toujours penser à tout détailler dans tes instructions comme ceci :

Private Sub UserForm_Initialize()
Dim WB As Workbook
Dim WS As WorkSheet
Dim L As Integer

Set WB = ThisWorkbook
With WB
Set WS = .Worksheets("Database")
End With
L = WS.Range("A65536").End(xlUp).Row
TextBox1 = WS.Range("A" & L)
End Sub

Enfin retiens que, quand tu es en face du code du UserForm, tu peux même faire "Executer pas à pas" depuis Menu "Debug" (Débugage en français je crois, je travaille en US).

Voilà tu devrais arriver à te sortir de ce mauvais pas !!

Bon Appétit
@+Thierry
 

Statistiques des forums

Discussions
312 310
Messages
2 087 128
Membres
103 479
dernier inscrit
Compta