Pb avec les valeurs sortantes COmbobox dans Userform
Bonjour à tous,
Je démarre tout juste la programmation des UserForm.
J'ai créé un formulaire avec 3 ComboBox pour qu'il injecte ces 3 données dans 3 cellules excel.
Si je sélectionne 1 seule valeur sur les 3 combobox créés, je me retrouve avec 2 cellules excel dont la valeur est écrasée par 0.
Aussi, j'aimerai faire le test suivant :
Pour chaque Combobox j'aimerai vérifier qu'il est sélectionné.
Si ce dernier n'est pas sélectionné :
- ne rien faire (c'est à dire ne pas modifier la valeur de la cellule associée)
Si ce dernier est sélectionné :
- transférer la valeur de la Comboboxe dans la cellule excel associée
Voici le script du bouton de validation :
Code:
1 2 3 4 5 6 7
| Private Sub CommandButton1_Click()
Sheets("Feuille1").Range("A1").Value=Combobox1.Value
Sheets("Feuille1").Range("A2").Value=Combobox2.Value
Sheets("Feuille1").Range("A3").Value=Combobox3.Value
End Sub |
J'espère avoir été clair.
Merci pour votre aide et votre indulgence.
Franck.
Validation de Combobox dans un UserForm Excel VBA
Bonjour Franck.
1. Problème : écrasement des valeurs des deux ou trois cellules par le bouton "OK"
Vous savez gérer l'événement click sur le bouton "OK" de nom BtnOk :
Code:
1 2 3 4 5
| Private Sub BtnOk_Click()
'Sheets("Feuille1").Range("A1").Value=Combobox1.Value ' Code en commentaire
'Sheets("Feuille1").Range("A2").Value=Combobox2.Value
'Sheets("Feuille1").Range("A3").Value=Combobox3.Value
End Sub |
Utilisez le bouton de validation "OK" à autre chose que récupérer les valeurs des trois Combobox parce qu'on ne sait pas si tous les Combobox ont été cliqués ou non. Ou alors tester la valeur de chaque Combobox avant d'affecter la cellule correspondante.
Citation:
Envoyé par
FrankCF
Si je sélectionne 1 seule valeur sur les 3 combobox créés, je me retrouve avec 2 cellules excel dont la valeur est écrasée par 0.
Cela explique l'écrasement des deux cellules quand un seul Combobox a été cliqué.
2. Solution en testant la valeur de chaque Combobox lors du OK
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Option Explicit ' Validation de Combobox dans un UserForm Excel VBA
Const nameSheet = "Feuille1"
Const rowData1 = 1 ' Première rangée. Trouvez un nom plus adapté si ce n'est pas des Data
Const rowData2 = rowData1 + 1
Const rowData3 = rowData2 + 1
Const colData = 1 ' Première colonne A. Idem. Choisir un nom de colonne représentatif.
Private Sub BtnOK_Click()
If ComboBox1.Value <> "" Then Sheets(nameSheet).Cells(rowData1, colData) = ComboBox1.Value
If ComboBox2.Value <> "" Then Sheets(nameSheet).Cells(rowData2, colData) = ComboBox2.Value
If ComboBox3.Value <> "" Then Sheets(nameSheet).Cells(rowData3, colData) = ComboBox3.Value
End Sub |
Dans la solution de gFZT82 du prochain message, ces trois tests sont optimisés en un seul test dans une boucle.
3. Solution 1 click par Combobox
Créer autant de gestionnaire d'événement click qu'il y a de Combobox.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Option Explicit ' Click individuel par Combobox dans un UserForm
Const nameSheet = "Feuille1"
Const rowCombo1 = 1 ' Première rangée. Trouvez un nom plus adapté.
Const rowCombo2 = rowCombo1 + 1
Const rowCombo3 = rowCombo2 + 1
Const colCombo = 1 ' Première colonne A. Idem. Choisir un nom de colonne représentatif.
Private Sub ComboBox1_Click()
Sheets(nameSheet).Cells(rowCombo1, colCombo) = ComboBox1.Value
End Sub
Private Sub ComboBox2_Click()
Sheets(nameSheet).Cells(rowCombo2, colCombo) = ComboBox2.Value
End Sub
Private Sub ComboBox3_Click()
Sheets(nameSheet).Cells(rowCombo3, colCombo) = ComboBox3.Value
End Sub |
Notez la déclaration des constantes qui décrivent Feuille1. Voir ma réponse à samourai59193.
___________
Si la discussion est résolue, vous pouvez cliquer sur le bouton :resolu:
En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert http://www.developpez.net/forums/ima.../vote1left.gif ci-dessous.