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 :

Initiliser plusieurs listbox au lancement de l'userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut Initiliser plusieurs listbox au lancement de l'userform
    Bonjour,
    Pour une BDD j'ai fait un userform de saisie
    A l'ouverture de je dois initialiser plusieures liistbox, les données des lisbox étant les données triées sans doublon et par aordre alpha d'une colonne de la BDD
    Voila mon code d'initialtisation

    Comment faire pour boucler, à la suite, toutes les listbox qui m'interesse ...

    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
    Option Compare Text
    Private Sub UserForm_Initialize()
    ' Insére automatiquement la date du jour dans DateDeSaisie
    DATESAISIE.Value = Format(Date, "dd/mm/yyyy")
    ' Insére automatiquement la date du jour dans DateRéponse
    DATEREPONSE.Value = Format(Date, "dd/mm/yyyy")
    ' Met "A RELANCER" par défaut dans CommentairsCandidature
    COMMENTAIRESCANDIDATURE.Value = "A RELANCER"
    ' Met en gras les noms de Sociétés
    NOMSOCIETE.Font.Bold = True
     
    ' Génére les données pour la liste de choix POSTES
    Dim temp()
    Set f = Sheets("BASE EMPLOI")
    Set MonDico = CreateObject("Scripting.Dictionary")
    For Each c In f.Range("AE2:AE" & f.[AE65000].End(xlUp).Row)
    If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
    Next c
    temp = MonDico.items
    Call tri(temp, LBound(temp), UBound(temp))
    Me.POSTE.List = temp
    End Sub
    Sub tri(a(), gauc, droi) ' Quick sort
    ref = a((gauc + droi) \ 2)
    g = gauc: d = droi
    Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
    temp = a(g): a(g) = a(d): a(d) = temp
    g = g + 1: d = d - 1
    End If
    Loop While g <= d
    If g < droi Then Call tri(a, g, droi)
    If gauc < d Then Call tri(a, gauc, d)
    End Sub
    merci de votre aide

  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
    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
    Private Sub UserForm_Initialize()
    ' Insére automatiquement la date du jour dans DateDeSaisie
    DATESAISIE.Value = Format(Date, "dd/mm/yyyy")
    ' Insére automatiquement la date du jour dans DateRéponse
    DATEREPONSE.Value = Format(Date, "dd/mm/yyyy")
    ' Met "A RELANCER" par défaut dans CommentairsCandidature
    COMMENTAIRESCANDIDATURE.Value = "A RELANCER"
    ' Met en gras les noms de Sociétés
    NOMSOCIETE.Font.Bold = True
     
    ' Génére les données pour les listes
     
    REMPLIR Me.POSTES, 31                            'on remplit la liste POSTES par les données de la colonne 31
     
    REMPLIR Me.PERSONNES, 2                          'on remplit la liste PERSONNES par les données de la colonne 2
     
    End Sub
     
    'On remplit la listbox ou la combobox LST par les données de la colonne COL
    Private Sub REMPLIR(ByVal LST As Object, ByVal COL As Integer)
    Dim MonDico As Object
    Dim F As Worksheet
    Dim c As Range
    Dim Temp()
     
    Set MonDico = CreateObject("Scripting.Dictionary")
    Set F = Worksheets("BASE EMPLOI")
    With F
        For Each c In .Range(.Cells(2, COL), .Cells(.Rows.Count, COL).End(xlUp))
            If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
        Next c
    End With
    Set F = Nothing
    Temp = MonDico.items
    Set MonDico = Nothing
     
    Call Tri(Temp, LBound(Temp), UBound(Temp))
    LST.List = Temp
    End Sub
     
    Private Sub Tri(A(), ByVal Gauc As Long, ByVal Droi As Long)    ' Quick sort
    Dim G As Long, D As Long
    Dim Ref, Temp
     
    Ref = A((Gauc + Droi) \ 2)
    G = Gauc: D = Droi
    Do
        Do While A(G) < Ref: G = G + 1: Loop
        Do While Ref < A(D): D = D - 1: Loop
        If G <= D Then
            Temp = A(G): A(G) = A(D): A(D) = Temp
            G = G + 1: D = D - 1
        End If
    Loop While G <= D
    If G < Droi Then Call Tri(A, G, Droi)
    If Gauc < D Then Call Tri(A, Gauc, D)
    End Sub

  3. #3
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Hello

    @ mercatog : Un grand merci le code marche nikel !

    A bientôt
    Seb

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

Discussions similaires

  1. [XL-2007] Plusieurs ListBox dans le même UserForm
    Par PaulG2B dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/06/2011, 13h56
  2. lancement d'un userform à la création d'un mail
    Par Vbapprentis dans le forum VBA Outlook
    Réponses: 8
    Dernier message: 18/09/2007, 14h02
  3. Comment lié un scrollbar avec plusieurs listbox ?
    Par magicdvil dans le forum wxPython
    Réponses: 5
    Dernier message: 19/05/2007, 10h29
  4. Réponses: 1
    Dernier message: 04/05/2007, 13h25
  5. Excel : lancement d'un userform à l'ouverture du classeur
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/12/2005, 17h29

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