OVH Cloud OVH Cloud

Erreur irrémédiable...

1 réponse
Avatar
Yvan
Bonjour,

L'appel du code suivant génère une "Erreur irrémédiable".

Quelqu'un a-t-il une idée ???

Private Sub Userform_Initialize()

' Ecriture des Cases à cocher sur le Userfom

With Worksheets("Infos")
a = Application.WorksheetFunction.CountA(.Range("B:B"))
End With

b = 30
d = 10

For i = 1 To a

With Me
CB.Add .Controls.Add("Forms.CheckBox.1", "Case à cocher" & i,
True)
.Controls(CB(i).Name).Top = b
.Controls(CB(i).Name).Left = 30
.Controls(CB(i).Name).Width = 250
.Controls(CB(i).Name).Height = 20
.Controls(CB(i).Name).Caption = Sheets("Infos").Cells(d, 2)
End With

b = b + 30
d = d + 1

Next i

End Sub

Private Sub CommandButton1_Click()

UserForm3.Hide

End Sub

Le fait de ne pas vider la collection peut-il générer ce type d'erreur ???

Pourtant le Userform est déchargé par la suite.

--
Merci pour vos réponses.

1 réponse

Avatar
Patrick Penet
Je n'ai pas d'erreur avec le code ci-dessous, et les
CheckBoxes sont bien créées.

Ceci dit j'utilise TOUJOURS

Option Explicit

en tête de module (je pense que ton erreur vient de là).
Ce qui force la déclaration préalable des variables.
Bonne habitude de programmation.

Comme la collection est redéfinie à chaque fois, il
n'est pas nécessaire de la vider, ce qu'il faudrait faire
si CB est une collection publique.

Private Sub UserForm_Initialize()
' Ecriture des Cases à cocher sur le Userfom
Dim a As Double
Dim b As Integer
Dim d As Integer
Dim CB As New Collection
Dim i As Integer

With Worksheets(1)
a = Application.WorksheetFunction.CountA(.Range("B:B"))
End With

b = 30
d = 7

For i = 1 To a

With Me
CB.Add .Controls.Add("Forms.CheckBox.1", "Case à cocher" & i, True)
.Controls(CB(i).Name).Top = b
.Controls(CB(i).Name).Left = 30
.Controls(CB(i).Name).Width = 250
.Controls(CB(i).Name).Height = 20
.Controls(CB(i).Name).Caption = Sheets(1).Cells(d, 2)
End With

b = b + 30
d = d + 1

Next i

End Sub

Attention pour les besoin du test, d=7.

Cordialement.
P.