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 :

récuperer les contenus des cellules pour un filtre


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut récuperer les contenus des cellules pour un filtre
    Bonjour ,

    je veux récuperer les contenus des cellules d'une colonne dans une ListBox pour construire un filtre , j'ai une macro qui recupere tout les contenus des cellules, et sa c'est pas bon , car si il y'a deux cellules qui ont le même contenu il seront affichés deux fois dans la ListBox , et le bute est de créer un filtre.


    Merci de votre aide

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 514
    Points : 822
    Points
    822
    Par défaut
    Bonjour,

    Essaye ceci en adaptant ta plage source et le nom de ta listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim i As Integer, Tabl()
    Tabl = WorksheetFunction.Transpose(Range("A1:A8"))
    With ListBox1
        .AddItem Tabl(1)
        For i = 2 To UBound(Tabl)
            If WorksheetFunction.Match(Tabl(i), Tabl, 0) = i Then .AddItem Tabl(i)
        Next
    End With
    Cordialement,

    Tirex28/

  3. #3
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut
    j'ai essayé d'éxécuté la macro et j'ai bogue avec le message
    "Objet requis (erreur 424)" a la ligne suivante:
    j'ai déclaré Tabl comme variant mais sa ne marche pas

  4. #4
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut
    Sa marche , je me suis tromé j'ai met la macro dan un module alor je crois qu'il falait la mettre dans le UserForm , je vais essayer de l'adapter selon mes besoins.

    Merci tirex28

  5. #5
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut
    je veux passer a cette macro en argument le nom de la feuille et l'indice du champs (Num de colonne du champs)

    car je récupere les noms des feuilles du classeur dans un ComboBox et les cahmps des feuille dans une ListBox . j'ai essayé toutes les possibilités mais sa bogue je n'arrive pas a l'adapter , j'ai trouvé sur l'aide cette macro mais j'avou que je ne comprend pas bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set myRange = Worksheets("Sheet1").Range("A1:C10")
    answer = Application.WorksheetFunction.Min(myRange)
    MsgBox answer
    Merci de votre aide

  6. #6
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut
    j'arrive a donner comme argument a la macro le nom de la feuille mais quant elle rencontre une cellule vide elle bogue
    le code est :
    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
     
    Sub filtre(feuille As String)
    Dim i As Integer 
     Set rang = Worksheets(feuille).Range("A2:A450")
    Tabl = Application.WorksheetFunction.Transpose(rang)
     
    With ListBox4
        .AddItem Tabl(1)
        For i = 2 To UBound(Tabl)
            If WorksheetFunction.Match(Tabl(i), Tabl, 0) = i Then .AddItem Tabl(i)
          Then .AddItem Tabl(i)
        Next
       End With
     
    End Sub
    et j'aimerais bien si c'est possible d'avoir dans la liste les criteres (VIDE et NON VIDE) pour permettre a l'utilisateur de filtrer ses données selon sons choix

    Merci de m'avoir lu car je sais que j'écrit mal

  7. #7
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut
    j'ai comeme quelque chose qui marche

    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
     
     
    Sub filtre(feuille As String)
    Dim i As Integer ', Tabl()  As Range
     
    'Tabl = WorksheetFunction.Transpose(Range("A2:A450"))
     Set rang = Worksheets(feuille).Range("A2:A450")
    Tabl = Application.WorksheetFunction.Transpose(rang)
     
    'Do
    With ListBox4
        .AddItem Tabl(1)
        For i = 2 To UBound(Tabl)
            If Tabl(i) = "" Then
               Tabl(i) = "VIDE"
               End If
            If WorksheetFunction.Match(Tabl(i), Tabl, 0) = i Then .AddItem Tabl(i)
     
           ' If Worksheets("FichierCentral").Match(Tabl(i), Tabl, 0) = i Then .AddItem Tabl(i)
        Next
        'Loop While
    End With
     
    End Sub

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 514
    Points : 822
    Points
    822
    Par défaut
    Bonjour,

    Pour exclure les cellules vides:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Tabl = WorksheetFunction.Transpose(Source)
    With ListBox1
        .AddItem Tabl(1)
        For i = 2 To UBound(Tabl)
            If Not VarType(Tabl(i)) = vbEmpty Then
                If WorksheetFunction.Match(Tabl(i), Tabl, 0) = i Then .AddItem Tabl(i)
            End If
        Next
    End With
    Reviens si tu as encore besoin d'aide.

    Cordialement,

    Tirex28/

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    novembre 2006
    Messages
    1 555
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 1 555
    Points : 1 687
    Points
    1 687
    Par défaut
    si ça t'interesse, j'ai ça dans mes classeurs. il s'agit d'un filtre élaboré pour anlever les doublons. assure toi de faire ce filtre dans une colonne vide (M:M), et efface là apré avoir rempli ta combobox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub UserForm_Initialize()
    Worksheets("feuil1").Columns("j:j").Select
    Columns("j:j").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Columns( _
    "j:j"), CopyToRange:=Columns("M:M"), Unique:=True
    tri = Range("M1").CurrentRegion.Rows.Count 'determine le nombre de ligne de la zone
    For i = 1 To tri
    combo_tri.AddItem Cells(i, 13) 'rerempli les combobox action
    Next i
    End Sub

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/04/2008, 17h20
  2. Lire un fichier Excel pour modifier les valeurs des cellules
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/10/2006, 15h13
  3. Réponses: 14
    Dernier message: 24/10/2006, 06h51
  4. Grille dessiner les bordures des cellules
    Par EPI_03 dans le forum Composants VCL
    Réponses: 18
    Dernier message: 18/04/2006, 12h16
  5. Récuperer les icons des JDialog
    Par Pro_Fete dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 17/04/2003, 13h00

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