[excel vba] impossible de charger un userform
Fermé
Bonjour,
j'ai créer un UserForm et tout fonctionnait. Puis, tout d'un coup, à chaque fois que je tente de le loader ou de l'afficher, je reçois le message 'Erreur d'éxécution '9': L'indice n'appartient pas à la sélection'.
Même si j'essaie en appuyant sur F5 alors que je suis dans la fenêtre du userform dans visual basic, je reçois le même message.
Je n'ai qu'un classeur d'ouvert et un seul userform.
merci d'avance,
vb
j'ai créer un UserForm et tout fonctionnait. Puis, tout d'un coup, à chaque fois que je tente de le loader ou de l'afficher, je reçois le message 'Erreur d'éxécution '9': L'indice n'appartient pas à la sélection'.
Même si j'essaie en appuyant sur F5 alors que je suis dans la fenêtre du userform dans visual basic, je reçois le même message.
Je n'ai qu'un classeur d'ouvert et un seul userform.
merci d'avance,
vb
A voir également:
- [excel vba] impossible de charger un userform
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Trier un tableau excel - Guide
- Déplacer une colonne excel - Guide
1 réponse
mise à jour:
le debug de vba indique toujours la ligne fautive à "Load UserFormASSIGN"
Cependant, en suivant pas à pas, j'ai réaliser qu'il entre dans la macro Initialize du userform et bloque toujours à la même ligne (NBAssign = 1) qui ne pourrait être plus simple...
le debug de vba indique toujours la ligne fautive à "Load UserFormASSIGN"
Cependant, en suivant pas à pas, j'ai réaliser qu'il entre dans la macro Initialize du userform et bloque toujours à la même ligne (NBAssign = 1) qui ne pourrait être plus simple...
Private Sub UserForm_Initialize() Sheets("bd").Activate i = 1 Do While Cells(1, i) <> "" If Cells(1, i) = "ASSIGNATIO" Then Cass = i If Cells(1, i) = "LIGNE" Then Cligne = i If Cells(1, i) = "DIRECTION" Then Cdir = i If Cells(1, i) = "TRACE" Then Ctrace = i If Cells(1, i) = "MIN_POSITI" Then Cpos = i If Cells(1, i) = "LIEU" Then Clieu = i If Cells(1, i) = "LIEU_PR_EC" Then Clieupr = i i = i + 1 Loop Dim ListeAssign(100) 'liste de toutes les assignations Dim ListePosAss(1000, 5) 'liste des positions par assignation '0: assignation '1: ligne '2: tracé '3: direction '4: lieu '5: lieu pr '6: position min NBListe = 1 ListePosAss(1, 0) = Cells(2, Cass) ListePosAss(1, 1) = Cells(2, Cligne) ListePosAss(1, 2) = Cells(2, Ctrace) ListePosAss(1, 3) = Cells(2, Cdir) ListePosAss(1, 4) = Cells(2, Clieu) ListePosAss(1, 5) = Cells(2, Clieupr) ListePosAss(1, 6) = Cells(2, Cpos) NBAssign = 1 '*********************ICI************ ListeAssign(1) = Cells(2, Cass) i = 3 Do While Cells(i, Cass) <> "" Add = 1 For j = 1 To NBAssign If Cells(i, Cass) = ListeAssign(j) Then Add = 0 Next j If Add = 1 Then NBAssign = NBAssign + 1 ListeAssign(NBAssign) = Cells(i, Cass) End If Add = 1 For j = 1 To NBListe If (Cells(i, Cass) = ListePosAss(j, 0) And _ Cells(i, Cligne) = ListePosAss(j, 1) And _ Cells(i, Ctrace) = ListePosAss(j, 2) And _ Cells(i, Cdir) = ListePosAss(j, 3) And _ Cells(i, Clieu) = ListePosAss(j, 4)) Or _ Cells(i, Clieupr) = "" Then Add = 0 Next j If Add = 1 Then NBListe = NBListe + 1 ListePosAss(1, 0) = Cells(i, Cass) ListePosAss(1, 1) = Cells(i, Cligne) ListePosAss(1, 2) = Cells(i, Ctrace) ListePosAss(1, 3) = Cells(i, Cdir) ListePosAss(1, 4) = Cells(i, Clieu) ListePosAss(1, 5) = Cells(i, Clieupr) ListePosAss(1, 6) = Cells(i, Cpos) End If i = i + 1 Loop For j = 1 To NBAssign Me.ComboASSIGN.AddItem ListeAssign(j) Me.ListDATA.AddItem ListeAssign(j) Next j Me.ComboASSIGN.Value = ListeAssign(NBAssign) End Sub
21 juin 2007 à 21:29
en fait, le code plante toujours à la même ligne peut importe son contenu...
21 juin 2007 à 22:14
la ligne "Dim ListePosAss(1000, 5)" aurait du être "Dim ListePosAss(1000, 6)"
merci, ca ma fait du bien d'en parler :)