IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Petit code pour ajout dans Listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut Petit code pour ajout dans Listbox
    Re bonjour à toutes et tous.

    C'est la première fois que je veux ajouter le contenu d'une variable dans une listbox existante (recette_active).
    Lors du premier ajout, tout fonctionne bien et la liste affiche bien la valeur ajoutée (sélectionnée dans liste_aliments).

    Mais une seconde tentative d'ajout produit un plantage "Impossible de définir la propriété List. Index de table de propriétés non valide".
    Lors du debogage la valeur à ajouter est bien renseignée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub bouton_droit_un_Click()
    Dim temp_aliment_nom As String
     
        If IsNull(liste_aliments.Value) Then
            MsgBox ("Selectionner un aliment")
        Else
     
        m = recette_active.ListCount
     
            If m = 0 Then
               m = 0
            Else
                m = m + 1
            End If
     
            Me.recette_active.AddItem
            Me.recette_active.List(m, 0) = liste_aliments.Value
     
        End If
     
    End Sub
    Tout se passe comme si la listbox recette_active était vidée à chaque fois que la sub est actionnée. Est ce bien cela ? Si oui comment conserver le contenu d'une listbox quand on change de sub ?
    J'ai essayé de déclarer Public mais Excel n'accepte pas car "Le membre existe déjà dans un module objet dont le présent module est dérivé."

    Alors ?

    Merci pour votre aide.

  2. #2
    Membre confirmé Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut J'ai trouvé.
    Il ne faut pas que j'incrémente m de 1 puisque m est le nombre d'enregistrement de la listbox appelée. En incrémentant je mets m au delà de la table d'indexation. Et je n'ai même pas besoin d'essayer de "géreré l'index m car Excel le fait très bien tout seul.

    Voici le code rectifié. Il fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        m = recette_active.ListCount
     
            Me.recette_active.AddItem
            Me.recette_active.List(m, 0) = liste_aliments.Value
     
        End If
    Puisse cela servir un jour.

    Bonne fin de journée à toutes et tous.

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 138
    Par défaut
    bonjour,

    Je pense que cela vient d'une confusion dans le variables de ton objet :
    - le .count commence bien à 1 si tu as un élément.
    - cependant cet élément commence à l'index 0

    Donc ton ajout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Me.recette_active.AddItem liste_aliments.Value
    En fait ce que tu as trouvé c'est ce que je te disais : ton .count est à zéro, tu fais additem, il passe à un mais toi tu documentes l'index zéro et tu n'as pas besoin de ton calcul, vba le fait avec la ligne ci_dessus.

  4. #4
    Membre confirmé Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut
    Merci Anasecu.
    En effet c'est plus propre et plus court.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. code pour écrire dans un fichier excel
    Par guintolli dans le forum SharePoint
    Réponses: 3
    Dernier message: 22/07/2008, 10h30
  2. petit souci requete ajout dans sous formulaire
    Par tibiurs dans le forum Access
    Réponses: 3
    Dernier message: 03/07/2008, 21h18
  3. Réponses: 3
    Dernier message: 06/05/2008, 14h32
  4. [VB.net] Exécuter code après ajout dans datagridview
    Par collaud_vb dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/09/2006, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo