UserForm : ComboBox - Ajouter valeur de la ComboBox dans tableau Excel

Résolu
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020 - 20 nov. 2018 à 19:11
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020 - 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
A voir également:

1 réponse

cs_Le Pivert Messages postés 7899 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 21 septembre 2023 137
21 nov. 2018 à 17:15
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

1
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
22 nov. 2018 à 18:32
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
0
cs_Le Pivert Messages postés 7899 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 21 septembre 2023 137
22 nov. 2018 à 18:41
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

@+
0
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
22 nov. 2018 à 21:04
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
0
cs_Le Pivert Messages postés 7899 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 21 septembre 2023 137
23 nov. 2018 à 08:13
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
0
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
23 nov. 2018 à 17:09
Parfait ! Je dirais même "Parfaitement, Parfait !" :)

Merci beaucoup @LePivert
0
Rejoignez-nous