UserForm : ComboBox - Ajouter valeur de la ComboBox dans tableau Excel [Résolu]

Messages postés
41
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
17 février 2019
- - Dernière réponse : 1Alexiiis
Messages postés
41
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
17 février 2019
- 23 nov. 2018 à 17:09
Bonjour à tous !

Dans VBA Excel, j'ai créé ce formulaire avec une Listbox qui récupére les données d'un tableau Excel :
(Evidemment, les données sont inventées, il ne s'agit en aucun cas de réelles informations)


Lorsque je sélectionne un choix de la ComboBox (ex. : "Accepté(e)") et que je clique sur le bouton valider, j'aimerais que ce choix s'ajoute dans la colonne G ("Commentaire") du tableau Excel + qu'il soit immédiatement affiché dans la ListBox (sans devoir faire fermer et réouvrir le formulaire) + passer à l'enregistrement suivant (de la ListBox)

Pour passer à l'enregistrement suivant de la ListBox, j'utilise ce code (qui fonctionne très bien) :
    If Me.lstRESULTATS.ListIndex = Me.lstRESULTATS.ListCount - 1 Then
        MsgBox "Vous avez atteint le dernier enregistrement !", vbInformation, "Dernier enregistrement atteint"
    Else: Me.lstRESULTATS.ListIndex = Me.lstRESULTATS.ListIndex + 1
    End If



--> J'ai besoin de votre aide car je n'arrive pas à trouver comment faire pour que :
1. Ce choix s'ajoute dans la colonne G ("Commentaire") du tableau Excel
2. Ce choix soit immédiatement affiché dans la ListBox (sans devoir faire fermer et réouvrir le UsF)

(Attention, il peut y avoir aussi bien 4 lignes un jour, puis 80 le lendemain, puis 26 dans 3 jours, etc...)


Merci d'avance pour aide

Cdlt,
Alexis
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
6051
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 mai 2019
79
1
Merci
Bonjour,

a adapter :

Dim ligne As Integer
Private Sub CommandButton1_Click()
ListView1.ListItems(ligne).ListSubItems(4).Text = ComboBox2.Value 'a adapter colonne(4)
 Sheets("Année").Cells(ligne, 4) = ComboBox2.Value 'a adapter nom de la feuille et colonne (4)
End Sub
Private Sub ListView1_Click()
     ligne = ListView1.SelectedItem.Index
 End Sub

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 146 internautes nous ont dit merci ce mois-ci

1Alexiiis
Messages postés
41
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
17 février 2019
-
Bonjour,

.ListItems
= "Erreur de compilation. Membre de méthode ou de données introuvable"

Je peux uniquement choisir
-
lstCOMMENTAIRE.ListCount

-
lstCOMMENTAIRE.ListIndex

-
lstCOMMENTAIRE.ListStyle


.ListSubItems
et
.SelectedItem.Index
ne fonctionnent pas non plus


Je ne sais pas si ça change quelque chose dans le code : c'est une ListBox que j'ai (et non une ListView)

Merci d'avance
cs_Le Pivert
Messages postés
6051
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 mai 2019
79 -
autant pour moi, tu trouveras ton bonheur dans le paragraphe: Listbox multicolonne

https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-G

Le code qui concerne la feuille ne change pas,c'est bon
Il faut juste adapter celui de la listBox

Si tu as encore des difficultés je verrais cela demain

@+
1Alexiiis
Messages postés
41
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
17 février 2019
-
Je n'y arrive pas... :(

Si besoin, j'ai mis mon fichier en ligne : http://www.k-upload.fr/afficher-fichier-2018-11-22-176aa6d44resultats.xlsm.html

Merci
cs_Le Pivert
Messages postés
6051
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 mai 2019
79 -
comme ceci:

Option Explicit
 Dim NumLigne As Integer
Private Sub cmdValider_Click()
'1. Ajouter le commentaire dans le colonne G
Sheets("Fichier Aide").Cells(NumLigne + 2, 7) = cboCOMMENTAIRE.Value '
'2. Afficher immédiatement dans la ListBox (sans devoir fermer et réouvrir le UsF)
'auto
'3. Passer à l'enregistrement suivant
    If Me.lstRESULTATS.ListIndex = Me.lstRESULTATS.ListCount - 1 Then
        MsgBox "Vous avez atteint le dernier enregistrement !", vbInformation, "Dernier enregistrement atteint"
    Else: Me.lstRESULTATS.ListIndex = Me.lstRESULTATS.ListIndex + 1
    End If
End Sub
Private Sub lstRESULTATS_Click()
    NumLigne = Me.lstRESULTATS.ListIndex 'Trouver le n° de la ligne sélectionné dans la ListBox
    Me.txtCODE.Value = Me.lstRESULTATS.Column(0, NumLigne)
    Me.txtNOM.Value = Me.lstRESULTATS.Column(1, NumLigne)
    Me.txtPRENOM.Value = Me.lstRESULTATS.Column(2, NumLigne)
    Me.txtADRESSE.Value = Me.lstRESULTATS.Column(3, NumLigne)
    Me.txtCP.Value = Me.lstRESULTATS.Column(4, NumLigne)
    Me.txtVILLE.Value = Me.lstRESULTATS.Column(5, NumLigne)
    Me.cboCOMMENTAIRE.Value = Me.lstRESULTATS.Column(6, NumLigne)
End Sub
Private Sub cboCOMMENTAIRE_Enter()
cboCOMMENTAIRE.List = Array("Accepté(e)", "En attente", "Refusé(e)")
End Sub


Voilà

@+ Le Pivert
1Alexiiis
Messages postés
41
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
17 février 2019
-
Parfait ! Je dirais même "Parfaitement, Parfait !" :)

Merci beaucoup @LePivert
Commenter la réponse de cs_Le Pivert