Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

A tou(te)s les Excellen(te)s VB (Vétérant(e)s du Basic)

4 réponses
Avatar
ThierryGolo
Bonsoir à tous les Excellentes et les Excellents VB (Vétérant(e)s du Basic)

Mon problème :

Sur une feuille disons Data j'ai mes colonnes date, nom, Société, etc etc.

Je voudrais dans une UserForm mettre un ComboBoxDateDébut

et un ComboBoxDateFin (bien-sûr la date mini du 2ème ComboBox serait

la date selectionnée du 1er ComboBox).

Une fois les deux dates selectionnées extraire

sur une autre feuille les lignes correspondantes

entre ces 2 dates.

(pour moi c'est clair (l'explication, pas le code))

Merci très beaucoup plein de votre aide à venir

Amicalemnt

ThierryGolo

4 réponses

Avatar
michdenis
Bonsoir ThierryGolo,


Copie la procédure suivante dans un module standard`
Elle filtre les données d'une feuille de calcul à partir des valeurs "date" de tes 2 combobox de ton formulaire

Tu dois définir les variables suivantes : ColduFiltre , NomFeuille et modifier le nom des combobox selon ceux de ton
application.

Le Résultat du filtre s'affichera sur une nouvelle feuille de calcul.

'-------------------------------------
Sub Filtre_Copier_Effacer()

Dim Rg As Range, LeFormat As String, Sh As Worksheet
Dim DateDébut As Long, DateFin As Long, ColduFiltre
Dim NomFeuille As String

'*******Variables à définir pour le filtre******

ColduFiltre = 2 'numéro de la colonne de la plage sur
'lequel s'effectue le filtre
NomFeuille = "Feuil1" 'Nom de ta feuille de calcul

With userform1
If IsDate(.combobox1) = True Then
DateDébut = CDate(userform1.combobox1)
Else
MsgBox "Le Combobox1) ne contient pas une date"
Exit Sub
End If
If IsDate(.combobox2) = True Then
DateFin = CDate(userform1.combobox2)
Else
MsgBox "Le Combobox2) ne contient pas une date"
Exit Sub
End If
'*************************************************

Application.ScreenUpdating = False
With Worksheets(NomFeuille)
'Détermine la plage où est le filtre doit s'exécuter
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row).CurrentRegion
'Prend note du format du champ date sur lequel le filtre s'exécute
LeFormat = Rg(2).NumberFormat
'Modifie le champ date pour les besoins du filtre
Rg.NumberFormat = "General"
'Filtre les données selon les critères retenus
Rg.AutoFilter Field:=ColduFiltre, Criteria1:=">=" & DateDébut, _
Operator:=xlAnd, Criteria2:="<=" & DateFin
'Copie les résultats du filtre vers la plage de destination
Set Sh = Worksheets.Add
Rg.SpecialCells(xlCellTypeVisible).Copy Sh.Range("A1")
Sh.Columns(ColduFiltre).NumberFormat = LeFormat
Rg.AutoFilter
'Remet le format date au champ date
Rg.NumberFormat = LeFormat
End With
'Libère l'espace mémoire occupée par les objets.
Set Rg = Nothing: Set Sh = Nothing

End Sub
'-------------------------------------


Salutations!






"ThierryGolo" a écrit dans le message de news:%
Bonsoir à tous les Excellentes et les Excellents VB (Vétérant(e)s du Basic)

Mon problème :

Sur une feuille disons Data j'ai mes colonnes date, nom, Société, etc etc.

Je voudrais dans une UserForm mettre un ComboBoxDateDébut

et un ComboBoxDateFin (bien-sûr la date mini du 2ème ComboBox serait

la date selectionnée du 1er ComboBox).

Une fois les deux dates selectionnées extraire

sur une autre feuille les lignes correspondantes

entre ces 2 dates.

(pour moi c'est clair (l'explication, pas le code))

Merci très beaucoup plein de votre aide à venir

Amicalemnt

ThierryGolo
Avatar
AV
Ave Denis,

Je vois que t'as pas trop pris de risques avec le problème du filtrage des dates
et leur format !
;-))
AV
Avatar
michdenis
Bonjour Thierry,

" les ComboBox1 et 2 sont vides "

Qu'est-ce que cela veut dire ?

A ) que la propriété RowSource n'a pas été défini
Si oui, où sont les données que devraient contenir tes listes déroulant(combobox)

B ) Que la valeur par défaut à l'ouverture du formulaire n'a pas été défini.
Si oui, Utilise l'événement suivant :
Private Sub UserForm_Initialize()
Me.ComboBox1.Value = ????
Me.ComboBox2.Value = ????
End Sub


Salutations!


P.S. La macro sur le filtre automatique copie les données vers une autre feuille mais n'efface pas les données copiées de la
plage de données originales !


"ThierryGolo" a écrit dans le message de news:
Bonjour ,
Je remerci MichDenispour ses lumières, petit problème j'ai fait tout comme
il m'a dit
mais lorsque je lance Sub Filtre_Copier_Effacer()
l'userForm1 s'ouvre mais les ComboBox1 et 2 sont vides???
Qelqu'un peut-i m'aider encore une fois
Je vous souhaite une Bonne journée
Et vous reMerci d'avance
ThierryGolo

"ThierryGolo" a écrit dans le message de
news: #
Bonsoir à tous les Excellentes et les Excellents VB (Vétérant(e)s du
Basic)


Mon problème :

Sur une feuille disons Data j'ai mes colonnes date, nom, Société, etc
etc.


Je voudrais dans une UserForm mettre un ComboBoxDateDébut

et un ComboBoxDateFin (bien-sûr la date mini du 2ème ComboBox serait

la date selectionnée du 1er ComboBox).

Une fois les deux dates selectionnées extraire

sur une autre feuille les lignes correspondantes

entre ces 2 dates.

(pour moi c'est clair (l'explication, pas le code))

Merci très beaucoup plein de votre aide à venir

Amicalemnt

ThierryGolo




Avatar
michdenis
Bonjour AV,

Moi qui croyait que de répondre à une telle question était déjà risquée....C'est vrai qu'un fil-de-fériste peut aussi
s'exécuter sans perche mais il serait préférable qu'il se tienne à quelques mètres du sol. ;-))


Salutations!



"AV" a écrit dans le message de news:
Ave Denis,

Je vois que t'as pas trop pris de risques avec le problème du filtrage des dates
et leur format !
;-))
AV