Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Excel 97 VBA et checkbox!

3 réponses
Avatar
Paflolo
Bonjour,
voilà je fais un formulaire et dans celui-ci j'ai une catégorie "fruit".
Je mets plusieurs cases à cocher: banane, pomme, poire, abricot, pêche et
figue.
Puis une autre zone où j'ai plusieurs autres cases à cocher: fruits,
legumes, viandes, poissons.
J'aimerais avoir la possibilité :
1/ de cocher 3 cases au maximum pour les fruits
2/ de cocher 2 cases au maximum pour la catégorie d'achat
2/ d'insérer les valeurs à la suite dans la même case excel sous la forme
(une case pour les fruits, une autre case pour type d'achat) :
banane / poire / figue
et
viande / legumes

Merci de votre aide précieuse!

3 réponses

Avatar
Céline
Bonjour Paflolo

qu'entends tu par catégorie?
j'ai essayé de te monter qqch qui sera "avec les moyens du bord". Ca
marche, mais c surement pas optimisé
Je suis partie du principe que sur mon userfom1 il n'y avait qu'une
catégorie de checkbox (genre que les fruits) et que les différents
checkbox s'apelaient checkbox1....n (le nom par défaut)
Il faudra donc revoir le for each outil in... en fonction de tes
catégories

Voici ce que je te propose :
dans chacune des procédures checkbox_click (double clic sur le chckbox
en mode création)
tu écris :
Mamacro (pour appeler la proc Mamacro)

et ensuite :
Sub mamacro()

Dim outil As Control

Dim i As Integer
i = 0

For Each outil In UserForm1.Controls
If Left(outil.Name, 8) = "CheckBox" Then
If outil.Value = True Then i = i + 1
End If
Next outil

If i > 2 Then
For Each outil In UserForm1.Controls
If Left(outil.Name, 8) = "CheckBox" Then
If outil.Value = False Then outil.Enabled = False
End If
Next outil
ElseIf i < 3 Then
For Each outil In UserForm1.Controls
If Left(outil.Name, 8) = "CheckBox" Then
If outil.Value = False Then outil.Enabled = True
End If
Next outil
End If

End Sub

Voila, j'espère que ca te convient? si besoin + de détails n'hésite
pas
bonne journée
Céline


Bonjour,
voilà je fais un formulaire et dans celui-ci j'ai une catégorie "frui t".
Je mets plusieurs cases à cocher: banane, pomme, poire, abricot, pêch e et
figue.
Puis une autre zone où j'ai plusieurs autres cases à cocher: fruits,
legumes, viandes, poissons.
J'aimerais avoir la possibilité :
1/ de cocher 3 cases au maximum pour les fruits
2/ de cocher 2 cases au maximum pour la catégorie d'achat
2/ d'insérer les valeurs à la suite dans la même case excel sous l a forme
(une case pour les fruits, une autre case pour type d'achat) :
banane / poire / figue
et
viande / legumes

Merci de votre aide précieuse!


Avatar
lSteph
Bonjour,
Voici qui devrait gèrer les deux listes selon ce que j'ai compris.
j'ai utilisé la propriété groupename et un module de classe pour
les checkbox:
http://cjoint.com/?kkrLzwVPxH

Cordialement.

lSteph


Bonjour,
voilà je fais un formulaire et dans celui-ci j'ai une catégorie "frui t".
Je mets plusieurs cases à cocher: banane, pomme, poire, abricot, pêch e et
figue.
Puis une autre zone où j'ai plusieurs autres cases à cocher: fruits,
legumes, viandes, poissons.
J'aimerais avoir la possibilité :
1/ de cocher 3 cases au maximum pour les fruits
2/ de cocher 2 cases au maximum pour la catégorie d'achat
2/ d'insérer les valeurs à la suite dans la même case excel sous l a forme
(une case pour les fruits, une autre case pour type d'achat) :
banane / poire / figue
et
viande / legumes

Merci de votre aide précieuse!


Avatar
lSteph
Bonjour,
pas pris le temps hier, les cjoint disparaissent, le code reste!
Préalable:
Dans vbe insérer un module standard puis un userform faire un premier
alignement de Checkbox
fenêtre des propriétés (en groupe des checkbox) règler la propriété left, et
surtout le groupName Groupe1
Ensuite isolément pour chaque indiquer les caption (abricot,banane...etc)
Faire idem pour ..Groupe2
Ajouter 2 boutons mettre leur propriété Name: Ok Fermer

insérer un module de classe puis dans le menu affichage fenêtre des
propriétés renommer le module MyChbClass
'''''''''''''''''''******MyChbClass*******
Option Explicit
Public WithEvents mychbx As MSForms.CheckBox

Private Sub MyChBx_Click()

Grp = mychbx.GroupName
If Grp = "Groupe1" Then
maxGrp = 3
Else
maxGrp = 2
End If
If comptCheck() >= maxGrp Then
verrouille
Else
deverrouille
End If


End Sub

'''''''''''''''''''******Code Userform1*******
Option Explicit
Private meschbx() As New MyChbClass

Private Sub Ok_Click()
Dim ctl As MSForms.CheckBox, txt1 As String, txt2 As String
txt1 = ""
txt2 = ""
On Error Resume Next
For Each ctl In UserForm1.Controls
If ctl.GroupName = "Groupe1" And ctl Then txt1 = txt1 & " " &
ctl.Caption
If ctl.GroupName = "Groupe2" And ctl Then txt2 = txt2 & " " &
ctl.Caption
Next
On Error GoTo 0
[a1] = txt1
[a2] = txt2
End Sub



Private Sub Fermer_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim elt As Control, i&
For Each elt In Me.Controls
If TypeName(elt) = "CheckBox" Then
ReDim Preserve meschbx(0 To i)
Set meschbx(i).mychbx = elt
i = i + 1
End If
Next elt
End Sub

Private Sub UserForm_Terminate()
Dim i&
For i = 0& To UBound(meschbx)
Set meschbx(i) = Nothing
Next i
End Sub

'''''''''''''''''*********dans module Standard********
Public maxGrp As Byte
Public Grp As String

Public Function comptCheck()
Dim elt As Control
comptCheck = 0
For Each elt In UserForm1.Controls
If TypeName(elt) = "CheckBox" Then
If elt.GroupName = Grp And elt.Value Then comptCheck =
comptCheck + 1
End If
Next
End Function

Public Sub verrouille()
Dim elt As Control
For Each elt In UserForm1.Controls
If TypeName(elt) = "CheckBox" Then
If elt.GroupName = Grp Then elt.Enabled = elt.Value
End If

Next
End Sub
Public Sub deverrouille()
Dim elt As Control
For Each elt In UserForm1.Controls
If TypeName(elt) = "CheckBox" Then
If elt.GroupName = Grp Then elt.Enabled = True
End If
Next
End Sub

'Cordialement

'lSteph




"Paflolo" a écrit dans le message de
news:
Bonjour,
voilà je fais un formulaire et dans celui-ci j'ai une catégorie "fruit".
Je mets plusieurs cases à cocher: banane, pomme, poire, abricot, pêche et
figue.
Puis une autre zone où j'ai plusieurs autres cases à cocher: fruits,
legumes, viandes, poissons.
J'aimerais avoir la possibilité :
1/ de cocher 3 cases au maximum pour les fruits
2/ de cocher 2 cases au maximum pour la catégorie d'achat
2/ d'insérer les valeurs à la suite dans la même case excel sous la forme
(une case pour les fruits, une autre case pour type d'achat) :
banane / poire / figue
et
viande / legumes

Merci de votre aide précieuse!