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 ???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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
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