Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2011, 18h05   #1
Membre à l'essai
 
Inscription : octobre 2007
Messages : 121
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 121
Points : 23
Points : 23
Par défaut 1er item de la liste d'une combobox

Bonjour,

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

Code :
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
gangsterus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 18h41   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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 :
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/12/2011, 18h45   #3
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
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 :
ComboBox1.ListIndex = 2

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/12/2011, 22h44   #4
Membre à l'essai
 
Inscription : octobre 2007
Messages : 121
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 121
Points : 23
Points : 23
Merci pour les réponses.
Je vais tester ça mardi maintenant.

à+
gangsterus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h19.


 
 
 
 
Partenaires

Hébergement Web