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 :

Suppression élément listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Ingenieur Projet
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur Projet
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Par défaut Suppression élément listbox
    Bonjour a tous et bonne année,

    Ci dessous un petit problème que vous saurez je pense résoudre :

    Voila : Dans un formulaire j'ai :
    - 10 Checkbox numérotés de 1 à 10
    - 10 Combobox numérotés de 1 à 10
    - 10 Listbox numérotés de 1 à 10

    L'objectif est le suivant :

    En cochant la checkbox X, l'utilisateur choisi une valeur dans la combobox X

    La code doit supprimer dans la listbox X la valeur renseigné dans la combobox X
    A noter que la combobox et la listbox ont la meme contenu alimenté par la fonction Additem à l'initialisation du formulaire.

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        For i = 1 To 10
        If B_AJOUT_FP.Controls("Checkbox" & i).Value = True Then     
            For j = B_AJOUT_FP.Controls("ListBox_MC_" & i).ListCount - 1 To 0 Step -1
                If B_AJOUT_FP.Controls("ListBox_MC_" & i).List(j) = B_AJOUT_FP.Controls("ComboBox" & i).Value Then
                    'on Supprime l'élément selectionné dans la ListBox.
                    B_AJOUT_FP.Controls("ListBox_MC_" & i).RemoveItem (j)
                End If
            Next j
        End If
        Next i
    Quoi que je fasse j'ai toujours la même erreur sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    B_AJOUT_FP.Controls("ListBox_MC_" & i).RemoveItem (j)
    Erreur d’exécution '-2147467259 (80004005)' : Erreur non répertoriée.

    J’avoue que le message d'erreur n'aide pas beaucoup.
    Vous auriez une idée ?

    D'avance merci
    Agd

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Voilà ce qui arrive lorsque l'on prend des raccourcis indus et fantaisistes
    Qu'est selon toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    B_AJOUT_FP.Controls("ComboBox" & i).Value
    ???
    Pour ton information : c'est, lorsqu'une sélection a été faite dans la combobox OU que l'utilisateur a saisi ce qu'il veut dans la zone d'édition de la combobox --->> TOUT SIMPLEMENT (ET RIEN D'AUTRE) CE QUI FIGURE DANS LA ZONE D'EDITION !
    Sois rigoureux, s'il te plait !
    Je te laisse maintenant réfléchir un peu ... (trop évident).

  3. #3
    Membre averti
    Profil pro
    Ingenieur Projet
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur Projet
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Par défaut
    Heu.... Bonjour unparia

    La propriété style de ma combobox est sur fmStyleDropDownList et non pas sur fmStyleDropDownCombo si c'est ce a quoi tu faisait allusion => donc pas possibilité pour l'utilisateur de choisir autre chose que ce que la combobox propose.

    Maintenant je n'ais pas la science infuse et tous le monde a le droit de faire des erreurs.
    Si je viens sur un forum c'est pour comprendre, apprendre de mes erreurs et me perfectionner.
    Si c'est évident pour toi ce n'est pas forcement évident pour tous le monde.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Si une chose est évidente, c'est bien celle-ci :
    on se réfère à l'article d'index n d'une combobox combobox1 ainsi :
    et en aucune manière autrement.
    Précision : il ne s'agit pas là de "science infuse" dont je bénéficierais, mais de ce qui est exposé dans l'aide interne VBA ...

    Quant à :
    ce n'est absolument rien d'autre que ce que contient la zone d'édition de la combobox. Rien d'autre.
    Et ce n'est pas parce-que cette dernière propriété prend également la valeur d'un article éventuellement sélectionné, qu'elle est pour autant, à chaque instant, la valeur de tout article.
    La chose est tellement évidente !
    Et comment, d'ailleurs, imaginer une seule seconde que cette propriété Value pourrait être celle de chaque article dans une boucle ? Par quel miracle ?
    VOILA.
    Et je viens de m'adresser à un débutant. Je l'ai également été, mais n'ai jamais commis, même au tout début, une erreur de cette espèce-là.

    Une dernière chose, ami : si tu fais comme moi (consulter l'aide interne VBA) tu avanceras très vite (aussi vite que j'ai moi-même avancé). Dans le cas contraire, on te verra assez souvent venir ici au prétexte que tu n'as pas "la science infuse". La "science infuse", c'est d'abord et avant tout celle qui résulte de la lecture de ton aide VBA interne, dont aucun forum n'est un substitut.
    La vocation d'un forum n'est pas celle de se substituer à ce "mode d'emploi" qu'est l'aide interne VBA, mais d'aider à la résolution de difficultés en dépit de ce qu'expose cette aide interne.

    Je suis vraiment désolé, crois-moi, d'avoir eu à te préciser ces choses-là.

  5. #5
    Membre averti
    Profil pro
    Ingenieur Projet
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur Projet
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Par défaut
    Ok.
    Compris ce que tu voulais dire.

    si je boucle au début c'est pour identifier la combobox et la listbox sur lesquels je doit faire mes contrôles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        For i = 1 To 10
        If B_AJOUT_FP.Controls("Checkbox" & i).Value = True Then
    Et comment, d'ailleurs, imaginer une seule seconde que cette propriété Value pourrait être celle de chaque article dans une boucle ? Par quel miracle ?
    Je ne boucle pas sur les éléments de la combobox mais de la listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            For j = B_AJOUT_FP.Controls("ListBox_MC_" & i).ListCount - 1 To 0 Step -1
    Enfin, quand un utilisateur fait un choix dans la liste d'un combobox, ce qu'il a choisi se trouve bien au final dans la zone d'édition de la combobox ? ou pas ?
    Donc
    c'est bien ce qu'il a choisi ? ou pas ?


    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        'je boucle sur tous les checkbox
        For i = 1 To 10
        'si une checkbox est cochée
        If B_AJOUT_FP.Controls("Checkbox" & i).Value = True Then     
            'je boucle sur tous les item dans la listbox correspondante a la checkbox cochée
            For j = B_AJOUT_FP.Controls("ListBox_MC_" & i).ListCount - 1 To 0 Step -1
                'si un item de la listbox correspond a ce que l'utilisateur a sélectionné dans la combobox (Zone d'édition) correspondant a la checkbox cochée
                If B_AJOUT_FP.Controls("ListBox_MC_" & i).List(j) = B_AJOUT_FP.Controls("ComboBox" & i).Value Then
                    'on Supprime dans la ListBox l'item correspondant a ce que l'utilisateur à sélectionné dans la combobox qui correspondant a la checkbox cochée et c'est la que ca bug
                    B_AJOUT_FP.Controls("ListBox_MC_" & i).RemoveItem (j)
                End If
            Next j
        End If
    pardonne moi si je suis vraiment crétin ... mais je ne vois aucun rapport avec ce que tu me dis et le bug réel qui se produit.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Tu voudras bien m'excuser, mais je ne vois dans ton code aucun élément qui montre qu'un article a été sélectionné.
    Tout ce que j'y vois, c'est un code qui contient une expression conditionnelle en subordonnant l'exécution au fait qu'une checkbox a été cochée.
    Tu voudras bien, dans ces conditions, montrer (comme il se doit) l'intégralité (depuis sub jusqu'à end sub inclus) de la procédure exécutée.
    Tu voudras bien préciser également dans la foulée, si ton "formulaire" est une feuille de calcul ou un Userform.
    Merci de donner systématiquement ces précisions.

    EDIT : ah oui (oublié ceci) : précise également comment ces deux contrôles (la combobox et la listbox) ont été abondées.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2010, 10h02
  2. suppression élément base de données
    Par momomafioso dans le forum ASP.NET
    Réponses: 24
    Dernier message: 15/06/2007, 14h40
  3. Suppression élément dans liste
    Par bugmenot dans le forum C
    Réponses: 12
    Dernier message: 06/12/2005, 19h52
  4. Ajouter des éléments à ListBox
    Par priest69 dans le forum Access
    Réponses: 5
    Dernier message: 20/09/2005, 14h05
  5. Pb ajouter/suppression élément liste
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/09/2005, 15h54

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