VBA changer une valeur dans un listbox multi colonne

Signaler
Messages postés
6
Date d'inscription
lundi 12 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour

J'ai un problème qui me semble assez banal mais je n'ai pas trouvé de solution.
Exemple : je suis en VBA access, j'ai 2 colonnes dans mon listbox et dans certain cas, je veux modifier la valeur de la deuxième colonne (cette colonne me sert d'indicateur et je lui met la valeur L, M ou LM) en faisant

Listbox1.Column(1, i) = "LM"

Quand j'arrive a cet ligne et je met ma souris au dessus de Listbox1.Column(1, 1) j'ai la valeur "L" mais quand il passe sur la ligne j'ai l'erreur

424 Objet requis

Est ce parcequ'on ne peut pas changer la valeur d'une donnée dans un listbox ou j'ai pas la bonne méthode.

Merci

3 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

Fais gaffe, tant les index (donc là où tu utilises ta variable i) sont en base 0, que les colonnes sont en base 1.

@++

le mystérieux chevalier,"Provençal, le gaulois"
Messages postés
6
Date d'inscription
lundi 12 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008

c'est l'index le problème parce que j'ai essayer avec des constances.

exemple :
Listbox1.Column(1, 1) = "LM"
Listbox1.Column(1, 2) = "LM" ... etc

Je me situe ou je veux dans mon listbox ...
si je fais

test = Listbox1.Column(1, 1)
j'ai "L" dans test
mais si je fait
Listbox1.Column(1, 1) = "LM"
j'ai une erreur, c'est comme si je ne pouvais pas changer sa valeur

Merci quand même
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
heu laisse tomber, ce que j'ai dit est une bétise, il y a bien la base 0 (c'est juste que je fais AddItem pour la col 0 (donc la première) puis j'ajoute des éléments aux auters colonnes)

Bref, ça n'a pas lieu de planter.
Il faut être sûr qu'au moment où tu modifies la données, la ligne soit déjà bien créée.

En excel, j'applique ce genre de procédure, qui fonctionne sans problème pour mon taf :

    Dim NewFMC As New FMC, i As Long

For i = 1 To ListeFMC.Count
    Call ListeFMC.lngItem(NewFMC, i)

    With NewFMC
        frmListe.lstEvenements.AddItem .Evenement.strValeur, i - 1
        frmListe.lstEvenements.Column(1, i - 1) = .Veracite.strValeur
        frmListe.lstEvenements.Column(2, i - 1) = .Autoroute.strValeur
        frmListe.lstEvenements.Column(3, i - 1) = .PR.Valeur
        frmListe.lstEvenements.Column(4, i - 1) = .Sens.Valeur
        frmListe.lstEvenements.Column(5, i - 1) = .VoiesBloquees.strValeur
        frmListe.lstEvenements.Column(6, i - 1) = .Evenement.LongueurBouchon
        frmListe.lstEvenements.Column(7, i - 1) = .DateCreation
        frmListe.lstEvenements.Column(8, i - 1) = IIf(.DateModification <> "00:00:00", .DateModification, "-") & " / " & IIf(.Fax.DateEnvoi <> "00:00:00", .Fax.DateEnvoi, "-")
        frmListe.lstEvenements.Column(9, i - 1) = .ID
    End With
    Set NewFMC = Nothing
Next i

Pour ton souci, je sèche

@++

le mystérieux chevalier,"Provençal, le gaulois"