[excel vba] impossible de charger un userform
vb
-
vb -
vb -
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
- Word et excel gratuit - Guide
- Trier un tableau excel - Guide
- Déplacer colonne excel - Guide
- Si ou 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
en fait, le code plante toujours à la même ligne peut importe son contenu...
la ligne "Dim ListePosAss(1000, 5)" aurait du être "Dim ListePosAss(1000, 6)"
merci, ca ma fait du bien d'en parler :)