trie de données dans userform

  • Initiateur de la discussion Initiateur de la discussion gege21
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

gege21

XLDnaute Occasionnel
bonsoir a tous
j'ai des données dans une feuille (elle ne doive pas être touche)
et je veut les affiche dans une userform pas années
mais quand je choisie une années quand je choisie une années elle s'affiche toutes
comment faire ??
merci pour votre aide
 

Pièces jointes

Re : trie de données dans userform

Salut gege21.

J'ai légèrement modifié ton classeur: lorsqu'il s'ouvre il te propose un autre UserForm. Tu saisies une année et après vérification t'affiche dans une liste toutes les dates de ta feuille 1 correspondant à cette année. Ce n'est qu'une ébauche qui, je l'espère, répond à ta question. Mon UserForm s'appelle DonneesParAnnees.

Classeur disponible:

Cordialement,
Mat'
 

Pièces jointes

Re : trie de données dans userform

bonjour Gege,Matichoux

Code:
Private Sub c1_Change()
    Dim AutoFilterMode As Boolean, tbl
    Dim Cel As Range, firstAddress As String, c As Byte, L As Long, Ld As Long, Lf As Long, nbL As Long
    Me.ListBox1.Clear
    With Worksheets("Données_mini_maxi")
        .Range("A1:A" & .Cells(Rows.Count, "a").End(xlUp).Row).NumberFormat = "yyyy"
        Set Cel = .Columns(1).Find(CDbl(C1), LookIn:=xlValues)
        If Not Cel Is Nothing Then
            firstAddress = Cel.Address
            Ld = Cel.Row: Lf = Ld - 1
            Do
                Lf = Lf + 1
                nbL = nbL + 1
                Set Cel = .Columns(1).FindNext(Cel)
            Loop While Not Cel Is Nothing And Cel.Address <> firstAddress
        End If

        .Range("A2:A" & .Cells(Rows.Count, "a").End(xlUp).Row).NumberFormat = "dd/mm/yyyy"
        ReDim tbl(1 To nbL, 1 To 39)
        nbL = 0
        For L = Ld To Lf
            nbL = nbL + 1
            For c = 2 To UBound(tbl, 2)
                tbl(nbL, c) = .Cells(L, c).Text
            Next
        Next
    End With

    Me.ListBox1.List = tbl

End Sub

Code:
Private Sub UserForm_Initialize()
Dim t, i As Long, m As Object
UserForm2.MultiPage1.Style = fmTabStyleNone
    Set m = CreateObject("Scripting.Dictionary")
    With Worksheets("Données_mini_maxi")
    t = .Range("a1:a" & .Cells(Rows.Count, 1).End(xlUp).Row)
    End With
  For i = 1 To UBound(t)
        If Not m.Exists(Year(t(i, 1))) Then m.Add Year(t(i, 1)), Year(t(i, 1))
Next

Me.C1.List = m.items

End Sub
 
Re : trie de données dans userform

bonjours Bebere

merci pour le code
j'ai juste 2 chose qui ne marche pas
- dans l'userform il n'y a pas les dates
- avec se code les titre ne s'affiche plus dans userform

avec c 2 chose sa serai tout a fais se qu'il me faut
 

Pièces jointes

Re : trie de données dans userform

bonsoir bebere
avec une listview c plus simple mais très lent 🙁 (les fiches dépasse les 100000 ligne )
effectivement pour avoir la date dans la 1er colonne j'avais trouvée
il manque donc plus que les titre dans le listbox
je précise qu'il ne faut pas touche aux données dans la feuille (d'autre code utilise les données)
 

Pièces jointes

Re : trie de données dans userform

bonjour Gege
ce n'est pas la listview qui fait que c'est lent
c'est la quantité de données et comment le code est écrit
100000lignes?
écrit un nouveau code(en partie)
le résultat de la recherche(C1) est mis dans la feuille Tmp(copy/paste),ensuite la listview est initialisée
si tu veux garder les données de la feuille tmp un certain temps,il faut faire quelques changements
 

Pièces jointes

Re : trie de données dans userform

bonjours bebere

les données sorte d'une station météo qui enregistre une ligne tous les 5 min donc sur une année plus de 100000 ligne

j'ai fais un essai avec 20000 c déjà long alors 100000 je n'ose pas y pense
je suis pas sur qui la listview et une bonne chose
dans le 1er code que j'ai mis tous s'affiche rapidement c juste le tris par années qui ne marche pas
donc je ne c pas se qui serais le mieux et le plus rapide pour une grande quantité de ligne
 
Re : trie de données dans userform

Gégé
dans Button_données_mini_maxi_Click()
cette ligne est en fin de code
Sheets("Données_mini_maxi").Activate
il faut la mettre en début

dans Button_telechage_2_Click() cette ligne
Destination:=.[A65536].End(xlUp).Offset)
dans feuille données_mini_maxi pourquoi ne pas mettre une ligne d'entêtes,il y a des lignes vides au début
tu pourrais appliquer un filtre et mettre le résultat dans temp
pas été plus loin
 
Re : trie de données dans userform

bonjours bebere
dans Button_données_mini_maxi_Click()
cette ligne est en fin de code
Sheets("Données_mini_maxi").Activate
il faut la mettre en début
si je fais sa le code plante dans c1_Change
les lignes vide sont efface quand dont clic sur le bouton Button_retour_7
et il ne faut surtout pas mettre d’entêtes dans la feuille données_mini_maxi sa ferais plante d'autre code
c pour sa qu'il ne faut touche au données de cette page
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
607
Réponses
7
Affichages
394
Réponses
2
Affichages
187
Retour