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 :

ComboBox - problème de code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 361
    Par défaut ComboBox - problème de code
    Bonjour,

    J'ai un ComboBox qui fonctionne mais j'aimerais l'adapter avec la colonne F qui comporte des chiffres (F3:F900)


    Codes avec texte sur colonne B (pour exemple) :

    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
    Private Sub ComboBox1_Change()
     
    Application.ScreenUpdating = False
    Dim Plage As Range
    Dim Cel As Range
     
    Set Plage = [B3:B900]
     
    For Each Cel In Plage
     
       If Cel.Value = ComboBox1.Value Then
           Rows(Cel.Row).Hidden = False
       Else
           Rows(Cel.Row).Hidden = True
       End If
     
    Next
       Application.ScreenUpdating = True
    End Sub

    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
    Private Sub UserForm_Initialize()
        Dim ws As Worksheet
        Dim rng As Range
        Dim dict As Object
        Dim i As Long
        Dim key As Variant
     
        Set ws = ThisWorkbook.Sheets("Interventions techniques")
     
        Set rng = ws.Range("B3", ws.Cells(ws.Rows.Count, "B").End(xlUp))
     
        Set dict = CreateObject("Scripting.Dictionary")
     
        For i = 1 To rng.Count
            If Not dict.Exists(rng(i, 1).Value) Then
                dict.Add rng(i, 1).Value, Nothing
            End If
        Next i
     
        For Each key In SortedKeys(dict.keys)
            ComboBox1.AddItem key
        Next key
    End Sub
    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
    Private Function SortedKeys(keys As Variant) As Variant
     
        Dim i As Long
        Dim j As Long
        Dim temp As Variant
        Dim arr() As Variant
     
        arr = keys
     
     
        For i = LBound(arr) To UBound(arr) - 1
            For j = i + 1 To UBound(arr)
                If arr(i) > arr(j) Then
                    temp = arr(i)
                    arr(i) = arr(j)
                    arr(j) = temp
                End If
            Next j
        Next i
     
        SortedKeys = arr
    End Function
    Merci.

    Bonne journée

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 536
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 536
    Par défaut
    Salut,

    Ce que tu fait, c'est un filtre.
    Pourquoi ne passes-tu pas par un tableau structuré qui apporte cette fonctionnalité de façon fiable, robuste et versatile, tout cela sans une seule ligne de code ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 361
    Par défaut
    Bonjour,

    Je passe par un UserForm avec plusieurs boutons de recherches.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 536
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 536
    Par défaut
    Tu peux filtrer un tableau.

    Le code ci-dessous filtre la colonne MyColumn du tableau nommé MyTable dans la feuille MyWorksheet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Number As Integer
    Number = 3
     
    Dim Ws As Excel.Worksheet
    Set Ws = ThisWorkbook.Worksheets("MyWorksheet")
     
    Dim Lo As Excel.ListObject
    Set Lo = Ws.ListObjects("MyTable")
     
    Lo.Range.AutoFilter Field:=Lo.ListColumns("MyColumn").Index, Criteria:=Number

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/10/2012, 14h39
  2. remplir combobox par le code
    Par boulhous dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/08/2007, 15h28
  3. trouver des codes with combobox
    Par ladygtk dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 23/02/2007, 12h42
  4. [vba Excell] Alleger Les Codes Combobox
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 25/01/2007, 08h37
  5. [VBA-E]Combobox et code trop long!! (debutante)
    Par legend dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/03/2006, 14h23

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