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 :

impossible de supprimer des Items dans une listbox à choix multiple [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    Bonjour à tous

    J'ai 2 listbox à choix multiple sur un userform
    j'ai un bouton qui grace à une boucle, charge la deuxième listbox avec les Item sélectionner et juste là ça fonctionne, mais impossible de supprimer l'item
    J'ai essayé toute les syntaxes que j'ai pu trouver sans aucun résultat

    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
    Sub action()
     
    Dim Tableau() As String, Inscrire() As String
        Dim i As Integer, L As Integer, P As String, y As Long, A As String, Li As Integer, Z As Integer
     
        For y = 0 To Box1.ListCount - 1
     
        With Box1
            If .Selected(y) = True Then        
                 TBox1.AddItem .List(y) ' ça ça fonctionne
                 .RemoveItem y 'là ça plante, .RemoveItem (y) ça plante aussi,              
                 End If
        End With
        Next y
     
    End Sub
    L'erreur doit être encore grosse comme une maison mais j'ai grandement besoin de votre aide pour la trouvée

    Merci d'avance

    La listbox "Box1 était chargée avec "Rowsource" alors j'ai pensé que ça pouvait venir de là, mais même si la list est chargée avec une boucle, ça ne change rien : impossible de supprimer l'Item (y)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Avec "RowSource", c'est sûr que ce n'est pas possible. Est-ce qu'elle est remplie avec "AddItem" ? Quel est le message d'erreur ?
    PS. c'est "y+1" pour removeitem.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    merci pour la réponse
    donc si j'ai bien compris impossible de supprimer l'item du même N° que (y)
    alors j'ai rajouter une deuxième boucle pour supprimer l'item précédent mon (y), si il est sélectionner
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Sub action()
     
    Dim Tableau() As String, Inscrire() As String
        Dim i As Integer, l As Integer, P As String, y As Long, A As String, Li As Integer, Z As Integer
     
    On Error Resume Next
     
     
        For y = 0 To Box1.ListCount - 1
     
        With Box1
     
            If .Selected(y) = True Then
     
                 TBox1.AddItem .List(y)
     
     
                 End If
                If y >= 1 Then
            If .Selected(y - 1) = True Then
     
                 .RemoveItem (y - 1)
               End If
                 End If
                End With
        Next y
     
     
     
     
    End Sub
    Le problème c'est que ça ne fonctionne qu'une fois car ça plante sur cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For y = 0 To Box1.ListCount - 1
    l'erreur est "l'indice n'appartient pas à la sélection

    je suppose que supprimer un item fou le bazar dans liscount -1
    je ne vois pas trop comment y remédier
    Y = Y + 1 ou Y = Y - 1 placer en dessous de la suppression ne fonctionne pas bon faut bien dire que je ne sais pas trop quoi faire et que je tatonne

    merci encore pour votre aide

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Et si tu commences par la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For y = Box1.ListCount to 0 step -1
    ...
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    aucun changement mise à part que cette fois-ci, ça supprime le dernier item sélectionné de la liste et ça plante

    indice ne correspond pas à la sélection


  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    je mets le fichier en ligne, se sera peu être plus clair
    http://tesafy.1fichier.com/

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Sub action()
     
        Dim i As Integer, y As Long
     
    On Error Resume Next
     
     With Box1
     
       For y = Box1.ListCount To 0 Step -1
     
     
     
            If .Selected(y) = True Then
     
                 TBox1.AddItem .List(y)
     
     
                 End If
     
     
            If .Selected(y + 1) = True Then
     
                 .RemoveItem (y + 1)
               End If
     
     
     
        Next y
     
        For i = 0 To 1
     
            If .Selected(i - 1) = True Then
     
                 .RemoveItem (i - 1)
               End If
     
        Next i
    End With
     
    End Sub
    j'ai traiter l'erreur avec un resume next et rajouter une boucle pour supprimer le premier item de la list s'il est sélectionné
    bon c'est du bricolage mais ça fonctionne

    encore merci

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    ce sujet a déjà été traité plusieurs fois
    les variables tableau sa te parle
    voici un exemple qui envoie les items sélectionnés dans la listbox1 vers la listbox2 et les supprime de la première

    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
     
     
     Sub action()
    Dim tablo(), a, i
    For i = 0 To ListBox1.ListCount - 1
      If ListBox1.Selected(i) = True Then
      ListBox2.AddItem ListBox1.List(i) 'on ajoute l'item de la listbox1 dans la listbox2
      Else
      ReDim Preserve tablo(a)
      tablo(a) = ListBox1.List(i) 'si l'item de la listbox1 n'est pas selectionné on ajoute le tablo
      a = a + 1 'on incremente a de 1 a chaque fois qu'un item n'est pas present dans la selection
      End If
    Next
    'on remet la lisbox1 a jour avec tablo
    ListBox1.List = tablo
    tout simplement

    avec un peu de recherche tu aurais trouvé au moins 2 exemples dans ce même cas au quel j'avais participé

    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. inserer des items dans une listbox en JSP sous Netbeans
    Par carole yao dans le forum NetBeans
    Réponses: 0
    Dernier message: 08/05/2012, 19h26
  2. Supprimer des Items dans une ListBox.
    Par abouhossam dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 23/01/2009, 11h01
  3. Supprimer des items dans une drop down liste
    Par msahmi dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/04/2008, 10h59
  4. Sélectionner des Items dans une ListBox
    Par berpi dans le forum Débuter
    Réponses: 3
    Dernier message: 07/02/2008, 22h56
  5. Réponses: 3
    Dernier message: 29/08/2006, 12h50

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