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

Signaler
Messages postés
47
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
18 juin 2020
-
Messages postés
47
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
18 juin 2020
-
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

Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
114
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

Messages postés
47
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
18 juin 2020

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
Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
114
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

@+
Messages postés
47
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
18 juin 2020

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
Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
114
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
Messages postés
47
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
18 juin 2020

Parfait ! Je dirais même "Parfaitement, Parfait !" :)

Merci beaucoup @LePivert