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

Messages postés
38
Date d'inscription
vendredi 14 juin 2013
Dernière intervention
9 décembre 2018
- - Dernière réponse : 1Alexiiis
Messages postés
38
Date d'inscription
vendredi 14 juin 2013
Dernière intervention
9 décembre 2018
- 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
5621
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 décembre 2018
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 96 internautes nous ont dit merci ce mois-ci

1Alexiiis
Messages postés
38
Date d'inscription
vendredi 14 juin 2013
Dernière intervention
9 décembre 2018
-
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
5621
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
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
38
Date d'inscription
vendredi 14 juin 2013
Dernière intervention
9 décembre 2018
-
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
5621
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
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
38
Date d'inscription
vendredi 14 juin 2013
Dernière intervention
9 décembre 2018
-
Parfait ! Je dirais même "Parfaitement, Parfait !" :)

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.