Recherche dans une liste entre deux dates

  • Initiateur de la discussion Initiateur de la discussion Paritec
  • 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 !

Paritec

XLDnaute Barbatruc
Bonjour à tous,Bonjour le forum,
Je viens de lire pas mal de fil portant sur ma recherche, mais rien qui ne correspond à mon souhait.
Je voudrais dans une liste de 9 colonnes, sélectionner toutes les lignes qui sont comprises entre une date dd mm yyyy et une autre date dd mm yyyy et copier la sélection dans une Listbox avec 9 colonnes Nommée Listbox1
Ma Listbox1 existe déjà dans un Userform1
La sélection est à faire sur la colonne H 8ème colonne là ou se trouvent les dates
Mes données sont en Feuille7 de mon classeur.
Si quelqu'un peut me faire un code qui me rempli ma Listbox1 ce serait super pour moi.
Pour la sélection les deux dates de début et de fin seront entrées dans deux textbox
admettons Textbox3 (début de la période) et Textbox4 (Fin de la période)
dans l'attente de vos réponses
Amicalement
Papou
 
Re : Recherche dans une liste entre deux dates

Bonjour Papou, Wilfried

une autre solution, à adapter sans doute car pas de modèle de donnée...

Code:
Private Sub CommandButton1_Click()
Dim c As Range
If Not IsDate(TextBox1) Or Not IsDate(TextBox2) Then _
    MsgBox "au moins une date invalide": Exit Sub
For Each c In Range("H2:H" & Range("H65536").End(xlUp).Row)
    If c.Value >= CDate(TextBox1) And c.Value <= CDate(TextBox2) Then
        ListBox1.AddItem c.Offset(0, -7).Value
        ListBox1.List(ListBox1.ListCount - 1, 1) = c.Offset(0, -6).Value
        ListBox1.List(ListBox1.ListCount - 1, 2) = c.Offset(0, -5).Value
        ListBox1.List(ListBox1.ListCount - 1, 3) = c.Offset(0, -4).Value
        ListBox1.List(ListBox1.ListCount - 1, 4) = c.Offset(0, -3).Value
        ListBox1.List(ListBox1.ListCount - 1, 5) = c.Offset(0, -2).Value
        ListBox1.List(ListBox1.ListCount - 1, 6) = c.Offset(0, -1).Value
        ListBox1.List(ListBox1.ListCount - 1, 7) = c.Value
        ListBox1.List(ListBox1.ListCount - 1, 8) = c.Offset(0, 1).Value
    End If
Next c
End Sub
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 9
End Sub

bonne soirée
@+
 
Re : Recherche dans une liste entre deux dates

Bonjour Wielfried, Bonjour Pierrot, Bonsoir le Forum,
Je pense que ta macro Pierrot c'est juste ce que je voulais je modifie mon classeur et je reviens te donner le résultat, peut-être pas ce soir car je dois partir dans 20 minutes .
merci pour tout bonne soirée
amicalement
Papou
 
Re : Recherche dans une liste entre deux dates

Bonsoir Pierrot, Bonsoir le forum
Ton code va bien c'est ce que je voulais, si tu peux me mettre un format "### ##0,00 €"
en colonne 5 et 6 c'est parfait.
J'ai essayé mais bon je n'y arrive pas alors je te redemande un coup de main
merci d'avance Pierrot
Merci à tous
Papou
 
Re : Recherche dans une liste entre deux dates

Bonjour Pierrot, Bonjour le Forum,
J'ai modifié ton code comme ci-dessous cela marche mais mon total ne marche plus
Var_somme, si vous pouvez me dire ou est la bêtise merci d'avance.
Papou

Private Sub CommandButton1_Click()
Dim c As Range
Dim var_somme As Double
Feuil7.Select
Label18 = ""
ListBox1.Clear
If Not IsDate(TextBox3) Or Not IsDate(TextBox4) Then _
MsgBox "au moins une date invalide": Exit Sub
For Each c In Range("H2:H" & Range("H65536").End(xlUp).Row)
If c.Value >= CDate(TextBox3) And c.Value <= CDate(TextBox4) Then
With UserForm1.ListBox1
.AddItem c.Offset(0, -7).Value
.List(.ListCount - 1, 1) = c.Offset(0, -6).Value
.List(.ListCount - 1, 2) = c.Offset(0, -5).Value
.List(.ListCount - 1, 3) = c.Offset(0, -4).Value
.List(.ListCount - 1, 4) = c.Offset(0, -3).Value
.List(.ListCount - 1, 5) = Format(c.Offset(0, -2).Value, "###,##0.00 €")
.List(.ListCount - 1, 6) = Format(c.Offset(0, -1).Value, "###,##0.00 €")
var_somme = var_somme + c.Offset(0, -1).Value
.List(.ListCount - 1, 7) = c.Value
.List(.ListCount - 1, 8) = c.Offset(0, 1).Value
End With
End If
Next c
Nombredeligne = UserForm1.ListBox1.ListCount
UserForm1.Label18 = "Pour La Période" & " " & Nombredeligne & " Lignes Trouvées"
UserForm1.Total_des_lignes = "Total Facturé " & Format(var_somme, "###,##0.00 €")
 
Re : Recherche dans une liste entre deux dates

Bonjour Papou, Wilfried

je viens de tester ces 2 lignes et chez moi (Excel2003, point en sépérateur de décimal) cela renvoie bien dans la listbox les montants convenablement formatés.

Code:
.List(.ListCount - 1, 5) = Format(c.Offset(0, -2).Value, "###,##0.00 €")
.List(.ListCount - 1, 6) = Format(c.Offset(0, -1).Value, "###,##0.00 €")

bon dimanche
@+
 
Re : Recherche dans une liste entre deux dates

Re:, Bonjour Pierrot

On se sait toujours pas ce que tu mets dans tes colonnes, des lignes de comptes ?

Ci c'est cela, tu as 2 montants surement 1 debit et un credit, or tu n'additionnes qu'un seul des ces deux montants, tu ne soustrais pas l'autre

M'enfin je parle peut etre dans le vide .................😛
 
Re : Recherche dans une liste entre deux dates

Bonjour Wilfried Bonjour Pierrot,
Wilfried tu as raison mais là c'est deux colonnes une prix unitaire l'autre prix total, donc moi ce qui m'intéresse c'est le total des totaux .
Donc tu ne parles pas dans le vide j'aurais pu oublier quelques choses.
Pierrot Maintenant le format de cellule javais comme je te l'avais précisé trouvé c'était bon, par contre, j'ai trouvé ma connerie et maintenant avec la modif ci-dessous plus de problèmes avec la somme.
J'ai mis la recherche dans un module et c'est bon
Un nouveau problème je n'arrive pas à déclencher ma progress bar et existe t'il un moyen pour mettre un format dans mes textbox3 et 4 pour ne pas avoir à taper d'espace dans la date pour taper à la volée 01052006 et que la textbox prenne 01 05 2006 ou 01/05/2006
dans l'attente de vos commentaire merci d'avance
Papou

Sub Recherche_Date()
Dim c As Range
Dim var_somme As Double
'Dim i As Byte, pas As Double
'Progress_bar.Show
UserForm1.Total_des_lignes = ""
With UserForm1
.Label18 = ""
.ListBox1.Clear
If Not IsDate(.TextBox3) Or Not IsDate(.TextBox4) Then _
MsgBox "au moins une date invalide": Exit Sub
For Each c In Feuil7.Range("H2:H" & Feuil7.Range("H65536").End(xlUp).Row)
If c.Value >= CDate(.TextBox3) And c.Value <= CDate(.TextBox4) Then
'pas = UserForm1.ListBox1.List / 12
With .ListBox1
.AddItem c.Offset(0, -7).Value
.List(.ListCount - 1, 1) = c.Offset(0, -6).Value
.List(.ListCount - 1, 2) = c.Offset(0, -5).Value
.List(.ListCount - 1, 3) = c.Offset(0, -4).Value
.List(.ListCount - 1, 4) = c.Offset(0, -3).Value
.List(.ListCount - 1, 5) = Format(c.Offset(0, -2).Value, "###,##0.00 €")
.List(.ListCount - 1, 6) = Format(c.Offset(0, -1).Value, "###,##0.00 €")
var_somme = var_somme + c.Offset(0, -1).Value
.List(.ListCount - 1, 7) = c.Value
.List(.ListCount - 1, 8) = c.Offset(0, 1).Value
End With
End If
Next c
'If Ligne > pas * i Then Progress_bar.Controls("Label" & i + 1).BackColor = &HC00000: i = i + 1: DoEvents
Nombredeligne = UserForm1.ListBox1.ListCount
UserForm1.Label18 = "Pour La Période" & " " & Nombredeligne & " Lignes Trouvées"
UserForm1.Total_des_lignes = "Total Facturé " & Format(var_somme, "###,##0.00 €")
'Unload Progress_bar
End With
End Sub
 
Re : Recherche dans une liste entre deux dates

Re

pour le controle de format de tes textbox essaye avec ceci :

Code:
Private Sub TextBox1_Change()
    If Len(TextBox1) = 2 Or Len(TextBox1) = 5 Then _
        TextBox1 = TextBox1 & "/"
End Sub

ton prolbème "progressbar", je ne vois pas trop en l'état, il faut peut être charger les USF en non modal.

Code:
UserForm1.Show 0

à voir, sans le fichier difficile à dire...
@+
 
Re : Recherche dans une liste entre deux dates

Bonjour Pierrot, Bonjour Le Forum,
avant j'avais un tableau temporaire et cette commande
pas = UBound(Tabtemp1, 1) / 12 mais avec la macro que tu as fait je ne sais pas quoi mettre alors j'ai éssayé plein de truc mais tu sais au pif c'est vraiment le hasrd quand cela marche!!!
je vais essayé pour le format des textbox et je te dirai
a+
Papou
 
Re : Recherche dans une liste entre deux dates

Re Pierrot, re le Forum,
J'ai fait une réponse sans voir ou j'avais mis la macro, elle marche trés bien ta macro, seulement il faut au moins la mettre au bon endroit!!!
Je ne suis pas trés doué tu sais bref cela marche comme je voulais merci pour tout et à tous principalement à Pierrot et Wilfried
bon week-end
amiaclement
Papou

PS: enfin j'espère que tout marche bien car il faut maintenant vérifier !!!!
 
- 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
3
Affichages
162
Retour