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 :

[Excel] ComboBox - extension liste via macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut [Excel] ComboBox - extension liste via macro
    Bonjour à tous,

    Voilà, je dois avoir un petit problème de conception à mon avis.
    Je crée une ComboBox (ComboBox1) dans un UserForm (Uf1) à laquelle j'ajoute des éléments via la méthode AddItem.

    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
    Private Sub UserForm_Initialize()
     
        ComboBox1.AddItem "Left Top"       
        ComboBox1.AddItem "Left Center"     
        ComboBox1.AddItem "Left Bottom"     
        ComboBox1.AddItem "Right Top"       
        ComboBox1.AddItem "Right Center"    
        ComboBox1.AddItem "Right Bottom"    
        ComboBox1.AddItem "Above Left"      
        ComboBox1.AddItem "Above Center"    
        ComboBox1.AddItem "Above Right"    
        ComboBox1.AddItem "Below Left"      
        ComboBox1.AddItem "Below Center"    
        ComboBox1.AddItem "Below Right"    
     
    End Sub
    Donc pas de problème, ma liste s'affiche dès que mon UserForm est initialisé.

    Seulement voilà, je voudrais, via une TextBox (TextBox1) se trouvant dans un 2ème UserForm (Uf2), rajouter un élément à la liste.
    Ex : "Center Center"

    La méthode AddItem fixe-t'il les données dans une liste en mémoire? je ne crois pas.

    Dois-je m'y prendre autrement?

    Ce que je veux, c'est créé une liste pour celui qui va utiliser le fichier excel et lui permettre via une textBox qu'il active via un bouton de commande, de rentrer une donnée en plus dans la liste sans qu'il soit obligé d'aller dans l'éditeur de macro qu'il ne connait pas.

    J'espère avoir été suffisament clair.

    Merci pour votre aide.

    Chewi

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    pourquoi ne stockes tu pas les données de la ListBox dans les cellules d'une feuille de calcul.
    Ce sera plus simple pour ajouter des éléments dans la liste.


    michel

  3. #3
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    bonsoir

    En faisant comme ceci je suppose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox.RowSource = "Sheet2!E2:E11"
    Dans un UserForm, je voudrais rentrer la donnée à rajouter dans une TextBox et en cliquant sur un bouton de commande, la rajouter à la liste.
    Donc je dis que la donnée se rajoute à la 1ère ligne vide de la colonne E et ensuite je dis que ma liste s'étend de E11 à E11 + 1.

    Comment faire?
    Peux-tu m'aider Silkyroad en me mettant une partie du code s'il te plaît?
    Ce serait super sympathique.

    Merci

    Chewi, très reconnaissant pour toute l'aide que l'on m'a déjà apportée.

  4. #4
    Membre du Club Avatar de Larsen21
    Inscrit en
    Décembre 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 44
    Points : 46
    Points
    46
    Par défaut Et oui !
    Tout simplement tu tape sur la commande du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.AddItem TextBox1.Text

    A+

  5. #5
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Re,

    Avec la méthode AddItem, où sont alors "stockées" les données de la liste?
    Elles sont mises en mémoire?

    Merci

  6. #6
    Membre du Club Avatar de Larsen21
    Inscrit en
    Décembre 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 44
    Points : 46
    Points
    46
    Par défaut Oui
    J'espère que je ne dis pas de bétise mais oui elle sont stockés en mémoire, mais tu peux les effacer avec :

    ou retrouver une ligne

    avec Combobox.Listindex

    Voila c'est a peut près tout ce que je peux te dire

    a+

  7. #7
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Bonjour à tous,

    Je reviens sur ce post car finalement je pense que non, avec AddItem, les éléments ne sont pas sauvés quelque part mais sont plutôt "chargés" à partir du code, que ce soit à l'initialisation de l'Uf ou autre.

    Quelqu'un pourrait-il apporter un éclaircissement sur cette affaire?

    Merci d'avance

    PS: ce post car je souhaite ne pas passer par une zone de données d'un classeur.

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    comme te la dis plus haut SilkyRoad ... avec excel le plus simple c'est de stocker tes données dans une feuille de calcul ... ( cachée où pas cachée..)
    ensuite pour transposer tes données de la feuille vers le combobox tu as le choix entre la modification de controlSource... où par des Additems lors de l'ouverture de ton Userform .. puis une mise à jour des données dans la feuille de calcul lors de la fermeture de l'Userform...

  9. #9
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Va pour la liste dans control source. Mais alors comment mettre à jour ma liste, ou plutôt comment étendre ma zone dans control source lorsque je rajoute un élément via une textBox comme dis ci-dessous?

    J'ai par exemple stocké dans Book1!Sheet1!E2:E11 des données.
    Je propose d'en rajouter une via la TextBox puis appuyer sur un bouton "valider" dans un Uf.
    Je voudrais dès lors que ma liste s'étende à Book1!Sheet1!E2:E11 +1 et que la cellule E11 +1 prenne la valeur de la TextBox?

    Au passage, comment faire référence à un classeur ouvert?

    Merci,
    Chewi

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tu va peu-être croire que je me contredis ......
    mais il me semble plus simple de gérer les données par un AddItem... tout en les mémorisant dans une feuille de calcul ..:

    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
     
    '
    '
    ' Sur ouverture de la form mise à jour combobox
    '
    Private Sub UserForm_Activate()
     Dim c As Range
     For Each c In ThisWorkbook.Sheets("Feuil1").Range("A1").CurrentRegion
       ComboBox1.AddItem c
     Next
    End Sub
    '
    ' Sur fermeture de la form mise à jour feuille excel..
    '
    Private Sub UserForm_Terminate()
     'Efface la feuille
     Dim i As Integer
     ThisWorkbook.Sheets("Feuil1").Cells.ClearContents
     For i = 1 To ComboBox1.ListCount
       ThisWorkbook.Sheets("Feuil1").Cells(i, 1) = ComboBox1.List(i - 1)
     Next
    End Sub
    ' Bouton Ajoute
    '
    Private Sub CommandButton1_Click()
     ComboBox1.AddItem TextBox1
    End Sub
    '
    ' Bouton Enleve
    '
     
     
    Private Sub CommandButton2_Click()
     Dim iMemo As Integer
     iMemo = ComboBox1.ListIndex
     If ComboBox1.ListIndex >= 0 Then ComboBox1.RemoveItem ComboBox1.ListIndex
     iMemo = iMemo - 1
     If iMemo >= 0 Then ComboBox1.ListIndex = iMemo
    End Sub
    Donc à l'ouverture de l'userform le combobox est "rempli" avec les données de la feuil1 ....

    les boutons Command1 et Command2 permettent d'ajouter dans le combobox la valeur saisie dans le textbox1 ... où d'effacer la valeur sélectionner dans le combobox...

    la fermeture de l'userform provoque la mise à jour de la feuille excel...


    PS : Pour accéder au classeur contenant la macro c'est ThisWorkBook ( voir )

  11. #11
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Ok

    Impeccable, je commence à comprendre un peu mieux le principe.

    Je vais voir tout ça et je vous tiens au courant avec le bouton résolu dès que ... résolu

    Merci,
    Chewi

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

Discussions similaires

  1. [VB6]Liste deroulante d'un combobox extensible
    Par seroa dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/02/2006, 12h01
  2. Réponses: 1
    Dernier message: 26/01/2006, 17h04
  3. [Débutant][Excel] ComboBox et liste de choix
    Par wanou44 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/12/2005, 17h36
  4. [VBA/Excel] Formule via macro
    Par UNi[FR] dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/10/2005, 15h11

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