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 :

1er item de la liste d'une combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 129
    Par défaut 1er item de la liste d'une combobox
    Bonjour,

    J'ai utilisé ce code trouvé dans la FAQ:

    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
    45
     
    Dim Cell As Range
        Dim Tableau()
        Dim TempTab As Variant
        Dim i As Integer, j As Integer
        Dim boolVerif As Boolean
     
        ReDim Tableau(1 To 1)
        Tableau(1) = Cells(1, 1)
     
        'Boucle sur les données de la colonne A, dans la Feuil1
        For Each Cell In Worksheets("Feuil1").Range("A4:A" & _
                            Worksheets("Feuil1").Range("A65536").End(xlUp).Row)
            boolVerif = False
     
            'Vérifie si le contenu de la cellule existe déjà dans le tableau
            For i = 1 To UBound(Tableau)
                'Si la donnée existe déjà dans le tableau
                If Tableau(i) = Cell Then
                    boolVerif = True
                    Exit For
                End If
            Next i
     
            'Si la donnée n'existe pas dans le tableau, on augmente la taille du tableau
            'et on ajoute la donnée.
            If boolVerif = False Then
                ReDim Preserve Tableau(1 To UBound(Tableau) + 1)
                Tableau(UBound(Tableau)) = Cell
            End If
     
            'Tri le contenu du tableau par ordre croissant.
            For i = 1 To UBound(Tableau)
                For j = 1 To UBound(Tableau)
                    If Tableau(i) < Tableau(j) Then
                        TempTab = Tableau(i)
                        Tableau(i) = Tableau(j)
                        Tableau(j) = TempTab
                    End If
                Next j
            Next i
        Next Cell
     
        'Alimente le ComboBox
        FrmStat.ComboNGest.List = Tableau
    Ca fonctionne très bien. La seule chose, c'est que je n'arrive pas à faire en sorte que le combobox ait la valeur du 1er item dès l'ouverture.

    Avez-vous une solution?

    Merci par avance

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Il est a mon avis préférable de trier ta liste une fois celle ci entièrement renseigné, ce sera moins gourmand en ressource.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Dim Cell As Range
        Dim Tableau()
        Dim TempTab As Variant
        Dim valeur As Integer
        Dim i As Integer, j As Integer, k As Integer
        'Dim boolVerif As Boolean
     
        ReDim Tableau(1 To 1)
        Tableau(1) = Cells(1, 1)
     
        'Boucle sur les données de la colonne A, dans la Feuil1
        For Each Cell In Worksheets("Feuil1").Range("A4:A" & _
                            Worksheets("Feuil1").Range("A65536").End(xlUp).Row)
           ' boolVerif = False
     
            'Vérifie si le contenu de la cellule existe déjà dans le tableau
            For i = 1 To UBound(Tableau)
                'Si la donnée existe déjà dans le tableau
                If Tableau(i) = Cell Then
                    'Si la donnée n'existe pas dans le tableau, on augmente la taille du tableau
                    'et on ajoute la donnée.
                    ReDim Preserve Tableau(1 To UBound(Tableau) + 1)
                    Tableau(UBound(Tableau)) = Cell
                    'boolVerif = True
                    Exit For
                End If
            Next i
     
            'If boolVerif = False Then
            'End If
     
        Next Cell
     
        'Il vaut mieux trier une fois toute les entrées ajoutées dans le combo
     
        'Tri le contenu du tableau par ordre croissant.
        'For i = 1 To UBound(Tableau)
        '    For j = 1 To UBound(Tableau)
        '        If Tableau(i) < Tableau(j) Then
        '            TempTab = Tableau(i)
        '            Tableau(i) = Tableau(j)
        '            Tableau(j) = TempTab
        '        End If
        '    Next j
        'Next i
     
        'Applique un tri croissant sur le tableau
        'Source : http://silkyroad.developpez.com/vba/tableaux/#LXIV-D
        For i = 1 To UBound(Tableau)
            j = i
     
            For k = x + 1 To UBound(Tableau)
                If Tableau(k) <= Tableau(x) Then x = k
            Next k
     
            If i <> j Then
            TempTab = Tableau(j): Tableau(j) = Tableau(i): Tableau(i) = TempTab
            End If
        Next i
     
        'Alimente le ComboBox
        FrmStat.ComboNGest.List = Tableau
        Me.ComboNGest.ListIndex = 0 'ou 1 je sais plus si c'est en Base 0 ou 1
    Pour la sélection d'un item de la liste c'est la propriété ListIndex qui le gère.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut heu...
    bonjour
    sachant que l'index de l'item commence par 0 pour le premier1 pour le 2 eme ect...
    tu le sectionne comme ca pour selectionner le premier

    exemple pour le 3eme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.ListIndex = 2

    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

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 129
    Par défaut
    Merci pour les réponses.
    Je vais tester ça mardi maintenant.

    à+

Discussions similaires

  1. Déplacer un item dans la liste d'1 combobox
    Par BECHE dans le forum Delphi
    Réponses: 7
    Dernier message: 13/10/2006, 20h56
  2. [VBA E] ajout conditionnel dans la liste d'une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/08/2006, 20h28
  3. [VBA E] creation dynamique de la liste d'une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2006, 13h12
  4. [VB6] largeur d'une zone de liste d'une combobox
    Par Nick13 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2004, 12h30

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