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 :

Remplir une combobox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut Remplir une combobox
    re-Bonjour à tous,

    J'ai actuellement une base de données stagiaires avec des listes déroulantes que je remplis avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
     
    Dim i
     
        For i = 2 To 7000
     
            ComboBox1.AddItem Sheets("Feuil1").Cells(i, 1)
     
        Next
     
    End Sub
    Mais ce code ne me convient pas car lorsque la base augmente je dois modifier la valeur 2 to 7000 à 7500, etc....
    J'aimerais avoir quelque chose qui compte automatiquement le nombre de valeur dans la table, si possible?

    Bonne journée

  2. #2
    Membre actif
    Homme Profil pro
    Responsable des études
    Inscrit en
    Décembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 51
    Par défaut
    Bonjour,

    à la place du :
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 2 To Range("A2").End(xlDown).Row
    Si tes informations sont dans la colonne A sinon tu remplace par ta colonne souhaitée, cela va chercher la dernière ligne non vide de ta table.

    Bonne journée

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut Remplir une combobox
    Merci pour le code mais j'ai testé et il mets qu'un certain nombre de stagiaire...j'ai pas toute la liste qui apparaît dans la combobox....

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    De quel code parles tu ?

    Combien d'UserForm as tu ?
    UserForm1.ComboBox1 c'est toujours mieux que ComboBox1

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut
    Merci Anthony et je parlais du code de Gaet76 que j'aime bien parce qu'il est simple....

    Oui j'ai plusieurs d'userforms mais j'ai fais comme ta dit et cela ne change rien....

  6. #6
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Simple à lire mais dans l'exécution ce n’est pas top une boucle de cette taille surtout quand une propriété te fais la même chose en une ligne.

    Si tu veux rester sur une boucle, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 2 To Range("A2").End(xlDown).Row
    par
    For
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     i = 2 To Range("A1000000").End(xlUp).Row
    ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 2 To Cells(rows.count,1).End(xlUp).Row
    Tu auras toutes tes données normalement.

    Le problème du End(xlDown) c'est que s'il y a une ligne sans donnée, tu ne vas pas tout en bas. Il est donc plus efficace de partir d'en bas.

    Ta liste est sur une autre feuille ?

    A l'image de UserForme1.ComboBox1 mieux que ComboBox1,
    Il est toujours préférable de mettre Sheets("NomDeLaFeuille").cells(.....)

    Mais bon je ne le fais pas toujours non plus

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut Remplir une combobox
    Oui ma liste est sur une autre feuille et j'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 2 To Cells(rows.count,1).End(xlUp).Row
    . Ma liste est vide du coup.....

  8. #8
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut

    Bonjour Marc31,

    Tu peux utiliser la propriété .RowSource du ComboBox pour remplir directement avec un Range et non ligne par ligne dans une boucle.

    Ensuite tu peux utiliser la méthode .End avec comme paramètre possible xlUp, XlDown, xlToLeft ou xlToRight qui sont en fait les équivalents de Ctrl + flèche
    Cells(Application.Rows.Count, 1).End(xlUp) est donc la dernière cellule de la colonne A qui est utilisée.

    Donc le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
        Dim rg As Range
        Set rg = Range(Cells(2, 1), Cells(Application.Rows.Count, 1).End(xlUp))
        UserForm1.ComboBox1.RowSource = rg.Address 
    End Sub

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

Discussions similaires

  1. [Spread designer] Remplir une combobox
    Par valoji dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/03/2006, 12h32
  2. [VBA-E] Comment remplir une ComboBox ?
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2006, 10h03
  3. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 16h31
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 16h29
  5. Réponses: 2
    Dernier message: 26/07/2004, 14h34

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