Problème avec affichage données dans userform

Bonsoir chers tous

Sur mon Fichier Je voudrais afficher uniquement les enregistrements du mois indiqué en cellule L1 et des mois antérieurs .

Pour ce faire j'ai créé une feuille intermédiaire "Filtre" qui sera masquée.

Dans un module j"ai une macro nommée "Filtre :

Sub Filtre()
    With Sheets("Filtre")
    .Cells.Delete
    Sheets("VA").Range("A1:J1").Copy .[A1]
    .Range("L1").FormulaR1C1 = "MOIS"
    .Range("L2").FormulaR1C1 = "=""<="" & VA!R1C12"

        Sheets("VA").Range("A1").CurrentRegion.AdvancedFilter _
                Action:=xlFilterCopy, _
                CriteriaRange:=.Range("L1:L2"), _
                CopyToRange:=.Range("A1:J1"), Unique:=False
    .Rows(1).Delete
    .Range("L1").Delete
    End With
End Sub

et Dans mon userform je Procède comme suit pour afficher le résultat

Private Sub UserForm_Initialize()
Dim dl As Long
Call Filtre
With Sheets("Filtre").Range("A4").CurrentRegion.Resize(, 10)
    ListBox2.ColumnCount = .Columns.Count
    If .[A1] <> "" Then ListBox2.RowSource = .[A1].CurrentRegion.Resize(.Range("A" & Rows.Count).End(xlUp).Row, 10).Address

End With

Le soucis est que le lancement du Userform pose problème

Pouvez vous m'aider Voire me proposer mieux ? merci

10test.xlsm (26.84 Ko)

Bonjour,

Perso, j'ai vu au moins 2 erreurs...

Dans l'initialisation de l'USF, remplace ton code par celui-ci :

Private Sub UserForm_Initialize()
Dim dl As Long
Call Filtre
With Sheets("Filtre") 'ici, tu avais rajouté la zone courante
    ListBox2.ColumnCount = .Columns.Count
    If .[A1] <> "" Then ListBox2.RowSource = .[A1].CurrentRegion.Resize(.Range("A" & Rows.Count).End(xlUp).Row, 10).Address
End With
End Sub

Et dans le code du filtre :

Sub Filtre()
    With Sheets("Filtre")
    .Cells.Delete
    Sheets("VA").Range("A1:J1").Copy .[A1]
'    .Range("L1").FormulaR1C1 = "MOIS" 'lorsqu'on utilise une formule, on ne met pas d'en-tête de critère
    .Range("L2").FormulaR1C1 = "=VA!RC[-10]<=VA!R1C12" 'la formule était mauvaise

        Sheets("VA").Range("A1").CurrentRegion.AdvancedFilter _
                Action:=xlFilterCopy, _
                CriteriaRange:=.Range("L1:L2"), _
                CopyToRange:=.Range("A1:J1"), Unique:=False
    .Rows(1).Delete
    .Range("L1").Delete
    End With
End Sub

Peut-être?

Merci Mais ça fonctionne pas. Mais par contre ma macro filtre fonctionne comme je le desire.

Le probleme reste le Private Sub UserForm_Initialize()

Re-,

Essaie avec ce code :

Option Explicit
Dim Tbl
Private Sub UserForm_Initialize()
Call Filtre
With Sheets("Filtre")
    ListBox2.ColumnCount = 10
    Tbl = .[A1].CurrentRegion.Resize(.Range("A" & Rows.Count).End(xlUp).Row, 10)
    If .[A1] <> "" Then ListBox2.List = Tbl
End With
End Sub

MERCI BEAUCOUP

Voici ce que cela donne en fichier joint.

Mais comment paramétrer la colonne Mois dans le listbox pour avoir le même format (mmm-yy) que la base de données ?

Encore merci

31test.xlsm (26.05 Ko)

Bonsoir,

Essaie avec ce code :

Private Sub UserForm_Initialize()
Dim I As Long
Call Filtre
With Sheets("Filtre")
    ListBox2.ColumnCount = 10
    Tbl = .[A1].CurrentRegion.Resize(.Range("A" & Rows.Count).End(xlUp).Row, 10)
    For I = LBound(Tbl) To UBound(Tbl)
        Tbl(I, 2) = Format(Tbl(I, 2), "mmm-yyyy")
    Next I
    If .[A1] <> "" Then ListBox2.List = Tbl
End With
End Sub

Peut-être?

Rechercher des sujets similaires à "probleme affichage donnees userform"