VBA changer une valeur dans un listbox multi colonne

gaudd Messages postés 6 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 16 mai 2008 - 12 mai 2008 à 02:10
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 12 mai 2008 à 03:04
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2008 à 02:26
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"
0
gaudd Messages postés 6 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 16 mai 2008
12 mai 2008 à 02:35
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2008 à 03:04
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"
0
Rejoignez-nous