Pb Checkbox & Combobox

krystof_ii

XLDnaute Occasionnel
Bonjour à tous,

Grace au forum, j'ai réussi à réaliser de façon dynamique des checkbox et combobox.

Par contre, je n'arrive pas a exploiter ensuite les valeurs.

1-Je souhaiterai, lors du clic sur le bouton OK, que la colonne H prenne la valeur correspondante soit de la checkbox, soit de la combobox.


2-Par ailleurs, pour donner les valeurs à la combobox, j'ai nommé une plage de donnée "Valeurs". Peut-on affecter les valeurs directement en vba ?

merci de m'avoir lu,
j'espere que qq'un pourra venir à mon secours.
 

Pièces jointes

  • Pop-up.zip
    30.1 KB · Affichages: 55
  • Pop-up.zip
    30.1 KB · Affichages: 57
  • Pop-up.zip
    30.1 KB · Affichages: 53

blord

XLDnaute Impliqué
Re : Pb Checkbox & Combobox

Salut,

De façon générale, on peut utiliser un code similaire pour reporter la valeur du combobox dans une cellule :

Sheets("ABC").Range("A1").Value = Combox1.value

Pour un checkbox, ce dernier a généralement 2 valeurs : True ou False. On peut faire comme ceci :

If Checkbox1.value = True then Sheets("ABC").Range("A1").Value = "Vrai"
If Checkbox1.value = False then Sheets("ABC").Range("A1").Value = "Faux"

Ça dépend de comment on veut gérer la case à cocher...

Pour répondre plus en profondeur à ta question, il faudrait savoir si les données bougent de place ou si elle sont toujours à la même ligne. Le code est plus simpll à réaliser lorsque les données sont "fixes"...

Blord
 

krystof_ii

XLDnaute Occasionnel
Re : Pb Checkbox & Combobox

Merci pour ces précisions.

Ma difficulté s'est que j'ai créé de façon dynamique les checkbox (ou les combobox) car leur nombre varie en fonction d'une liste (liste du personnel).

Je dois donc faire appel à leur valeur d'une manière similaire à:
for i=1 to nb_personne
activecell.offset(i,7)=checkbox(i).value
next i

Mais ce codage plante ...
 

job75

XLDnaute Barbatruc
Re : Pb Checkbox & Combobox

Bonjour krystof, blord :

Ecrire :

Code:
For i = 1 To nb_personne
ActiveCell.Offset(i, 7) = Controls("CheckBox" & i).Value
Next

Edit : il faut faire attention à ce que les CheckBox soient nommées correctement bien sûr. Sinon les renommer (propriété Name).

A+
 
Dernière édition:

lol13

XLDnaute Nouveau
bonjour à tous,
je déterre un très vieux sujet mais il correspond parfaitement à mon probleme...
je souhaite enregistrer en colonne "h" soit une valeur prédéfinie de la checkbox 3 soit une valeur de la combobox3 soit combobox4.
mon probleme etant que la valeur predefinie à la checkbox s'enregistre bien en "h" mais si je bascule sur une combobox, auccune valeurs ne s'enregistre en "h"
merci d'avance pour votre soutien.
 

lol13

XLDnaute Nouveau
desolé, j'avais oublier mon code VBE:

Private Sub CommandButton1_Click() 'message erreur case non remplie If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox5 = "" Or TextBox4 = "jj/mm/aaaa" Or TextBox14 = "" Then MsgBox ("les informations: Fournisseur, Type d'achat, N° de BL, Date BL, Réf. chantier et Montant TTC sont indispensables !") Else 'si tout est bon, remplir tableau If Sheets("BL").Range("b4") = "" Then Sheets("BL").Range("b4") = TextBox1 Else 'si tableau dejas remplis, creer une nouvelle ligne en bas Sheets("BL").ListObjects(1).ListRows.Add End If 'enregistrement sur la derniere ligne de tableau dlt = Sheets("BL").Range("d1048576").End(xlUp).Row 'affectation case formulaire / tableau Sheets("BL").Range("b" & dlt) = TextBox1 Sheets("BL").Range("c" & dlt) = TextBox2 Sheets("BL").Range("d" & dlt) = TextBox3 Sheets("BL").Range("e" & dlt) = TextBox4 Sheets("BL").Range("f" & dlt) = TextBox5 Sheets("BL").Range("m" & dlt) = TextBox8 Sheets("BL").Range("j" & dlt) = TextBox12 Sheets("BL").Range("k" & dlt) = TextBox13 Sheets("BL").Range("l" & dlt) = TextBox14 Sheets("BL").Range("o" & dlt) = TextBox19 Sheets("BL").Range("g" & dlt) = ComboBox1 Sheets("BL").Range("h" & dlt) = ComboBox3 Sheets("BL").Range("h" & dlt) = ComboBox4 Sheets("BL").Range("i" & dlt) = CheckBox1 Sheets("BL").Range("n" & dlt) = CheckBox2 Sheets("BL").Range("h" & dlt) = IIf(CheckBox3, "la société", "") Unload UserForm4 End If End Sub Private Sub CommandButton2_Click() 'message erreur case non remplie If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox5 = "" Or TextBox4 = "jj/mm/aaaa" Or TextBox14 = "" Then MsgBox ("les informations: Fournisseur, Type d'achat, N° de BL, Date BL, Réf. chantier et Montant TTC sont indispensables !") Else 'si tout est bon, remplir tableau If Sheets("BL").Range("b4") = "" Then Sheets("BL").Range("b4") = TextBox1 Else 'si tableau dejas remplis, creer une nouvelle ligne en bas Sheets("BL").ListObjects(1).ListRows.Add End If 'enregistrement sur la derniere ligne de tableau dlt = Sheets("BL").Range("d1048576").End(xlUp).Row 'affectation case formulaire / tableau Sheets("BL").Range("b" & dlt) = TextBox1 Sheets("BL").Range("c" & dlt) = TextBox2 Sheets("BL").Range("d" & dlt) = TextBox3 Sheets("BL").Range("e" & dlt) = TextBox4 Sheets("BL").Range("f" & dlt) = TextBox5 Sheets("BL").Range("m" & dlt) = TextBox8 Sheets("BL").Range("j" & dlt) = TextBox12 Sheets("BL").Range("k" & dlt) = TextBox13 Sheets("BL").Range("l" & dlt) = TextBox14 Sheets("BL").Range("o" & dlt) = TextBox19 Sheets("BL").Range("g" & dlt) = ComboBox1 Sheets("BL").Range("h" & dlt) = ComboBox3 Sheets("BL").Range("h" & dlt) = ComboBox4 Sheets("BL").Range("i" & dlt) = CheckBox1 Sheets("BL").Range("n" & dlt) = CheckBox2 Sheets("BL").Range("h" & dlt) = IIf(CheckBox3, "la société", "") Unload Me UserForm4.Show End If End Sub Private Sub CommandButton3_Click() Unload Me End Sub Private Sub UserForm_Initialize() 'format affiché lors d'ouverture formulaire TextBox4.Text = "jj/mm/aaaa" TextBox8.Text = "jj/mm/aaaa" ComboBox3.Visible = False ComboBox4.Visible = False End Sub Private Sub TextBox4_AfterUpdate() 'message erreur On Error GoTo messagerreur 'format date TextBox4 = Format(TextBox4, "short date") Exit Sub messagerreur: MsgBox ("Le format doit être: jj/mm/aaaa !") TextBox4 = Empty End Sub Private Sub TextBox4_Enter() 'supprime l'affichage format lors du clic If TextBox4 = "jj/mm/aaaa" Then TextBox4 = "" End If End Sub Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'remet l'affichage format lors de sortie case vide If TextBox4 = "" Then TextBox4 = "jj/mm/aaaa" End If End Sub Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'commande de numero et slash uniquement If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0 End If End Sub Private Sub TextBox8_AfterUpdate() 'message erreur On Error GoTo messagerreur 'format date TextBox8 = Format(TextBox8, "short date") Exit Sub messagerreur: MsgBox ("Le format doit être: jj/mm/aaaa !") TextBox8 = Empty End Sub Private Sub TextBox8_Enter() 'supprime l'affichage format lors du clic If TextBox8 = "jj/mm/aaaa" Then TextBox8 = "" End If End Sub Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'remet l'affichage format lors de sortie case vide If TextBox8 = "" Then TextBox8 = "jj/mm/aaaa" End If End Sub Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'commande de numero et slash uniquement If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0 End If End Sub 'condition checkbox une seule coché Private Sub onlyOneChkB(Selectedchkb As String) Dim cCont As Control If Me.Controls(Selectedchkb).Value = True Then For Each cCont In Me.Controls If TypeName(cCont) = "CheckBox" Then If cCont.Name <> Selectedchkb Then cCont.Value = False End If End If Next cCont End If End Sub 'identification checkbox à coché Private Sub CheckBox3_Click() onlyOneChkB (Me.CheckBox3.Name) End Sub 'identification checkbox à coché Private Sub CheckBox4_Click() onlyOneChkB (Me.CheckBox4.Name) ComboBox3.Visible = CheckBox4 End Sub 'identification checkbox à coché Private Sub CheckBox5_Click() onlyOneChkB (Me.CheckBox5.Name) ComboBox4.Visible = CheckBox5 End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa