Recuper valeur combobox pour alim cellules

  • Initiateur de la discussion Initiateur de la discussion quentin046
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

quentin046

XLDnaute Nouveau
Bonjour a tous, étant novice en VBA j'aimerais avoir votre aide concernant un projet d'userform pour gérer un petit stock.

J'aimerais avec la référence que je choisie dans ma combobox pouvoir alimenter une cellule avec la quantité qui a été sélectionné dans l'userform et ainsi remplir un tableau. J'ai donc tapé un code qui marche pour la première valeur de ma combobox mais lorsque je veut prendre la deuxième valeur cela ne marche plus.

Private Sub CommandButton_valider_Click()

Dim Ctrl As Control
Dim colonne As Integer
Dim derligne As Integer
Dim item As Integer

With Worksheets("Stock")
'dire ou ce trouve la derniere value de libre dans le tableau
derligne = .Range("A65536").End(xlUp).Row + 1


'pour chaque insertion dans l'userform la valeur de la colonne est egale au TAG
For Each Ctrl In gestion_stock.Controls

colonne = Val(Ctrl.Tag)

If colonne > 0 Then .Cells(derligne, colonne) = Ctrl

Next

'si la combobox ne contient aucune valeur, alors ne pas mettre à jour (rien)
'If ComboBox_stock.Value = "" Then MsgBox (" Pas de référence choisie, vbcritical")
'Unload Me: Exit Sub


'ecriture sur la colonne 1 derniere cellule libre l'incrementation auto du chiffre de cde
Feuil4.Cells(derligne, 1) = Val(TextBox_cde)

End With
End Sub

Private Sub ComboBox_stock_Change()

Dim gel_1 As Integer
Dim gel_2 As Integer
Dim peigne_1 As Integer
Dim peigne_2 As Integer

'si la valeur de la combobox est egal au mot gel alors egal 1
If ComboBox_stock.Value = "gel" Then gel_1 = 1

'si la valeur de la combobox est egal au mot peigne alors egal 1
If ComboBox_stock.Value = "peigne" Then peigne_1 = 1


'gel_2 sert au numero de ligne
gel_2 = 3

'tant que ma cellule est different de nul
Do While Cells(gel_2, 10) <> ""

'descendre d'une cellule
Cells(gel_2, 10).Offset(1, 0).Select

'incrementer de 1 pour passer a la prochaine ligne
gel_2 = gel_2 + 1

Loop

'si gel_1 =1 alors la valeur de la cellule active est egal a la valeur de la texte box de quantite
If gel_1 = 1 Then ActiveCell.Value = gestion_stock.TextBox_quantite.Value
'gel_2 sert au numero de ligne



peigne_2 = 3

'tant que ma cellule est different de nul
Do While Cells(peigne_2, 12) <> ""

'descendre d'une cellule
Cells(peigne_2, 12).Offset(1, 0).Select

'incrementer de 1 pour passer a la prochaine ligne
peigne_2 = peigne_2 + 1

Loop


'si gel_1 =1 alors la valeur de la cellule active est egal a la valeur de la texte box de quantite
If peigne_1 = 1 Then ActiveCell.Value = gestion_stock.TextBox_quantite.Value


'Ferme l'UserForm nommé gestion_stock
Unload gestion_stock





End Sub
Je vous joint mon fichier excel.

En vous remerciant de l'attention que vous porterait à mon problème.
 

Pièces jointes

Re : Recuper valeur combobox pour alim cellules

On s'en sert en général dans presque toutes les applications utilisant des ComboBox puisque c'est le numéro dans son List de la ligne choisie (0 étant le 1er) et on trouve en général moyen d'en faire un accès direct vers ce qu'on veut sans être obligé de tester une à une toutes les valeurs possibles !
 
Re : Recuper valeur combobox pour alim cellules

Ok merci j'ai réussi à le faire par contre et ce que je peut faire une boucle avec parce que je voudrais faire par exemple:
-si je choisi la valeur correspondant au mot "gel" je copie un chiffre dans une la cellule (3,10)
-si je choisi encore le mot "gel" je voudrais copier dans la cellule du dessous (4,10) (incrémenter de 1 a chaque fois)
-par contre si je choisi le mot "peigne" je voudrais copier ma valeur dans la cellule (3,12) et encore incrémenter de 1 à chaque nouvelle saisie de "peigne" et ainsi de suite.

et ce que c'est possible ou je dois faire des IF comme ceux-ci

If ComboBox_stock.ListIndex = 0 Then .Cells(3, 10) = TextBox_quantite.Value
If ComboBox_stock.ListIndex = 1 Then .Cells(3, 12) = TextBox_quantite.Value
If ComboBox_stock.ListIndex = 2 Then .Cells(3, 14) = TextBox_quantite.Value
...

Merci d'avance pour ta réponse
 
Re : Recuper valeur combobox pour alim cellules

Un grand merci pour votre code qui me fait gagner beaucoup de temps et réduit considérablement mes lignes de code la seule dernière petite question qui me reste est pour l’incrémentation d'une cellule car car j’arrive à écrire dans la cellule 3 des différentes colonnes mais pas dans la 4,5,6...Car la ligne se remet tous le temps à 2, j'ai essayé de le mettre à l'initialisation de mon userforme mais sa me fait apparaitre mes 10 valeurs identique de J3 : J12.

Voici mon bout de code


For Each Ctrl In gestion_stock.Controls

ligne = 2
ligne = ligne + 1

.Cells(ligne, ComboBox_stock.ListIndex * 2 + 10) = TextBox_quantite.Value

'Ferme l'UserForm nommé gestion_stock
Unload gestion_stock


Cordialement
 
Re : Recuper valeur combobox pour alim cellules

Il faut naturellement mettre l'initialisation et l'incrémentation de Ligne à l'endroit approprié, et prendre les valeurs d'où il faut. Vous n'utilisez pas du tout le Ctrl de la boucle: vous envoyez toujours le même TextBox_quantité.Value simplement autant de fois qu'il y a de contrôles dans votre Userform, ce qui n'a me semble-t-il rien à voir.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
193
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
5
Affichages
182
Réponses
4
Affichages
177
Réponses
5
Affichages
237
Retour