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 :

Ajouter supprimer items listbox avec textbox et commandbutton


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité(e)
    Invité(e)
    Par défaut Ajouter supprimer items listbox avec textbox et commandbutton
    Bonjour à tous,

    Je suis en train de faire une userform qui va permettre de nommer des colonnes. J’ai des choix obligatoires, des proposées et des libres.

    Mon userform se lance avec le classeur.

    Ce que je souhaite faire c’est, avoir une texbox ou écrire « toto1 », un bouton ajouter, qui va ajouter « toto1 » à la listbox. Pareil pour « toto2 » qui va être ajouter à la listbox.

    Si erreur, je selectionne « toto1 » dans la listbox et appuis ensuite sur un bouton supprimer, qui va enlever seulement « toto1 ».

    Une fois les choix effectué, j’ai un bouton « lancer » qui va regarder les items ajoutés à la listbox et les ajouter sur Row1 et column la plus à gauche.

    Mon problème c’est que je m’embrouille dans les additem, removeitem

    De plus je penses qu’il y a plusieurs moyen de proceder.

    Que le bouton ajouter, ajoute la value textbox sur une plage que regardera la listbox ? Mais dans ce cas là, ça me dérange d’avoir des blancs dans ma listbox.

    Que le bouton ajouter fasse un additem avec la valeur de la textbox, mais dans ce cas là, comment est le code ? Est comment faire ecrire ensuite les items de la listbox sur ma feuille ?

    Mon userform ressemble à ça :



    Le bouton démarrer va faire inscrire les items dans la ligne une colonne la plus à gauche et fermé l’userform.

    Pour le moment je n’ai que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim Lg As String
    Lg = Sheets("Feuil2").Cells(65536, 1).End(xlUp).Row + 1
    Sheets("Feuil2").Cells(Lg, "A").Value = UserForm1.TextBox1.Value
    Ce qui me permet d’inscrire la valeur textbox dans une plage ou la textbox recherché ses items…
    Voilà, merci de m’aider.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour,
    une proposition
    sur userform j'ai ListBox1, TextBox1, Bouton nommé Ajout et Bouton nommé Suppr
    la listbox est remplie à l'aide des données de la plage A2:A... de la feuille MaFeuille
    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
    42
    43
    44
    Option Explicit
    Dim ws As Worksheet
     
    Private Sub Ajout_Click()
    Dim c As Range
    If Me.TextBox1.Value <> "" Then
        With ws
            Set c = .Columns("A:A").Find(Me.TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
            If c Is Nothing Then
                .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1).Value = Me.TextBox1.Value
                Me.ListBox1.AddItem Me.TextBox1.Value
            End If
            Set c = Nothing
        End With
    End If
    End Sub
     
    Private Sub Suppr_Click()
    Dim c As Range
    If Me.ListBox1.ListIndex > -1 Then
        Me.TextBox1.Value = Me.ListBox1.Value
        Set c = ws.Columns("A:A").Find(Me.TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then
                Me.ListBox1.RemoveItem Me.ListBox1.ListIndex
                Me.ListBox1.ListIndex = -1
                Me.TextBox1.Value = ""
                With ws
                    .Range("A" & c.Row + 1 & ":A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1).Cut .Range("A" & c.Row)
                End With
            End If
        Set c = Nothing
    End If
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim i As Long
    Set ws = Sheets("MaFeuille") 'à adapter
     
    With ws
        For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            Me.ListBox1.AddItem .Range("A" & i).Value
        Next i
    End With
    End Sub
    L'ajout: on écrit une entrée dans textbox1 et on ajoute
    La suppression, on sélectionne l'Item dans la listbox et on supprime

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Merci pour cette réponse.

    J'obtiens quelques erreurs.

    La première était une variable non définie pour les "ws = ..."

    J'ai donc mis dim ws as worksheet en pensant que ws = worksheet

    J'ai ensuite une erreur sur les lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set c = ws.Columns("A:A").Find(Me.TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
    "variable objet ou variable bloc with non définie" là par contre, je sais pas trop comment l'enlever...

    j'ai également une erreur accès refusé sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Me.ListBox1.AddItem .Range("A" & i).Value
    Je précise que j'ai enlevé la protection de mes feuilles avant de tester.
    Je précise également que j'ai bien changé le "mafeuille" en "feuil2"

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    le est bien en haut du module de l'userform
    tu as bien dans >Intialize de ton userform ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ws=sheets("Feuil2")
    ps: j'ai testé

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Euh j'ai mis
    dans [general] [declaration]
    Je n'ai donc plus la première erreur sur la variable, par contre une nouvelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Me.ListBox1.AddItem Me.TextBox1.Value
    Accès refusé...

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu mettais un extrait de ton fichier?

Discussions similaires

  1. Problème : Filtrer Listbox avec textbox
    Par clickandgo dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/05/2013, 11h29
  2. Ajouter Items dans listbox avec selectedvalue
    Par abyssetique dans le forum C#
    Réponses: 6
    Dernier message: 21/09/2010, 18h11
  3. Comment supprimer une ligne de la listbox avec le bouton 'suppr'
    Par florent64 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 11/06/2007, 17h25
  4. supprimer item d'une listbox a l'aide d'un popup menu
    Par avogadro dans le forum Composants VCL
    Réponses: 14
    Dernier message: 24/04/2006, 22h08
  5. [Question] Ajouter un item dans une ListBox
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 29/12/2005, 19h38

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