Ajout automatique de checkbox

DRANAC

XLDnaute Junior
Bonjour,

Bonjour,
J'aimerais ajouter automatiquement des checkbox en fonction d'une feuille.
Je calle pour la,mise en page et pour la nomination.
Voila le code :


For i = 1 To 300
If Sheets("MAT").Cells(i, 6).Value = login.Label3 And Sheets("MAT").Cells(i, 5).Value = "" And Sheets("MAT").Cells(i, 1).Value = 1 Then

'CheckBox1.Caption = Sheets("MAT").Cells(i, 7)

For a = 1 To 5
Me.Controls.Add ("forms.checkbox." & a)
'Me.Controls("CheckBox" & a).Caption = Sheets("MAT").Cells(i, a + 6)
Next a
End If

Next i

Merci d'avance
 

BERRACHED said

XLDnaute Accro
Re : Ajout automatique de checkbox

Salut,DRANAC

une ébauche j'espere qu'elle te conviens :

Code:
Sub ajout()
Dim t, l, i
  ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
                  DisplayAsIcon:=False, Left:=80, Top:=80, Width:=10, Height:=10 _
                  ).Select
 i = 1
      Do While Cells(i, 1).Value <> ""
           Workbooks("classeur1").Activate
          Sheets(1).Activate
           Cells(i, 5).Select
           t = ActiveCell.Top
           l = ActiveCell.Left
           ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
                DisplayAsIcon:=False, Left:=l + 2, Top:=t + 2, Width:=10, Height:=10 _
                ).Select
           i = i + 1
      Loop
End Sub

Cordialement
 

kjin

XLDnaute Barbatruc
Re : Ajout automatique de checkbox

Bonsoir,
Un peu dans le brouillard tout ça
Ne serait ce pas un formulaire (login.label...)
Dans ce cas
Code:
'...Code qui commence on ne sait où !
    With Sheets("MAT")
        For i = 1 To 300
            If .Cells(i, 6).Value = Login.Label3 And .Cells(i, 5).Value = "" _
            And .Cells(i, 1).Value = 1 Then
            CheckBox1.Caption = .Cells(i, 7)
                For j = 1 To 5  'j'aime pas les a
                    Set CkB = Controls.Add("forms.Checkbox.1")
                        CkB.Left = 10
                        CkB.Top = 50 * j  'au pifomètre
                        CkB.Caption = .Cells(i, j + 6)
                Next j
            End If
        Next i
    End With
'...Code qui finit on ne sait où !
Une autre solution, plutôt que de tâtonner pour placer les Checkbox, c'est de les placer et de ne les rendre visibles que si les critères sont validés.
A+
kjin
 

DRANAC

XLDnaute Junior
Re : Ajout automatique de checkbox

Ça marche ... elle est vivante ...
Je m'emballe la !
Un grand merci à vous deux, bizz sur la fesse droite.
J'ai une larme à l'œil quand je vois les petits checkbox qui s'affichent comme des grands tout seul.
C'est énervant d'être nul.
Sur ce, vais continuer à déployer ma nullité.
 

DRANAC

XLDnaute Junior
Re : Ajout automatique de checkbox

Donc voila mon code qui "fonctionne" pour l'ajout des checkbox et des CB :

Private Sub UserForm_Initialize()
Z = 1
a = 1
b = 1

For i = 1 To 300

If Sheets("MAT").Cells(i, 6).Value = login.Label3 And Sheets("MAT").Cells(i, 5).Value = "" Then
'on compte le nombre de ligne,
Z = Z + 1

Set CkB = Controls.Add("forms.Checkbox.1")
CkB.Left = 10
CkB.Top = 30 * Z
CkB.Name = b
CkB.Caption = Sheets("MAT").Cells(i, 7)
a = a + 1

For j = 1 To 10

If Sheets("MAT").Cells(i, j + 7) <> "" Then
Set CkB = Controls.Add("forms.Checkbox.1")
CkB.Left = 90 * j + 1
CkB.Top = 30 * Z
CkB.Caption = Sheets("MAT").Cells(i, j + 7)
CkB.Name = a
a = a + 1

End If

Next j

Set bt = Controls.Add("forms.CommandButton.1")
bt.Left = 500
bt.Top = 30 * Z
bt.Name = "cb" & b
bt.Caption = "Validé"

' on nomme les CkB et BT
a = a + 1
b = b + 1
End If

Next i

'on parametre la taille de l'userform en fonction des lignes
With matos_retour
.Width = 600
.Height = Z * 40

End With

End Sub

Comme dirait un pot informaticien " c'est moche, mal foutu, aussi rapide qu'une cafetière mais ça tourne". :D

Il me reste une question :
Comment ajouter les commandes directement lors de la création du commandbuton ?

Merci d'avance
 

DRANAC

XLDnaute Junior
Re : Ajout automatique de checkbox

Après une petite mais non moins profonde réflexion, je suis arrivé à au code suivant pour ajouter une commande vba à mon bouton :

Set bt = Controls.Add("forms.CommandButton.1")
bt.Left = 500
bt.Top = 30 * Z
bt.Caption = bt.Name

Dim code As String

code = "Private Sub " & bt & "_Click()" & vbCrLf
code = code & "MsgBox""coucou""" & vbCrLf
code = code & "End Sub"

Mais bien sur, ca ne va pas et je ne sais pas pourquoi
Comment doit on faire pour donné un code à un objet tel qu'un bouton ???
 

Discussions similaires

Réponses
11
Affichages
348

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 017
dernier inscrit
annboi19