XL 2019 Filtre avec Textbox

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

duplaly

XLDnaute Occasionnel
Bonjour
Je joins mon fichier pour avoir un peu d'aide. J'aimerais pouvoir filtrer la feuille database selon la date inscrite dans le textbox1 qui est dans l'userform. Appel du userform dans la page Contrôle.
Votre aide serait appréciée!
 

Pièces jointes

bien vu jacky
correction car datepart(ww deconne alors evaluate
donc remplacer
VB:
Controls(.Tag).Caption = DatePart("ww", DateSerial(Calendar.Cbyear.Value, Calendar.Cbmonth.ListIndex + 1, A), IIf(region = 0, vbSunday, vbMonday))
par ça
VB:
 Controls(.Tag).Caption = Evaluate("= ISOWEEKNUM(" & CLng(DateSerial(Calendar.Cbyear.Value, Calendar.Cbmonth.ListIndex + 1, A)) & ")")
Au risque de faire monter la tension 😳 😡😳😉
N'est plus compatible toute version d'Excel
Mon vieux Excel (2007) n'en veut pas, il ne connait pas ISO.....Truc Machin..
Mais ne te casse pas la tête, si cela fonctionne sur les versions plus récente.

Une suggestion, la propriété "ListRows" du contrôle "Cbmonth" pourrait passer de 8 à 12 pour éviter l'ascenseur.
 
et oui je suis en train de chercher dans mes archive dossier dates j'avais deja trouvé une macro pour les isoweek sur 2007 mais comme j'ai changé pour 2013 j'ai plus regardé ces trucs

le list row oui si tu veux normalement dans la version télechargeable c'est fait (je crois)
je cherche pour iso 😉
 
Tiens met toi la de coté ça peut servir c'est kado 😉
LA fonction
VB:
Function ISOWEEK2007(dat As Date, Optional region = 1): ISOWEEK2007 = DatePart("ww", dat - Weekday(Date, IIf(region = 0, 2, 1)) + 4, 2, 2): End Function
et pour la tester
VB:
Sub test()
    MsgBox ISOWEEK2007(CDate("01/01/2021"), 0)    'EN  US
    MsgBox ISOWEEK2007(CDate("01/01/2021"), 1)    'EN  FR
    MsgBox ISOWEEK2007(CDate("01/01/2021"))       'EN  FR
End Sub

et pour la formule c'est pareil
pour une date en US c'est =ISOWEEK2007(A2;0)
pour une date en FR c'est =ISOWEEK2007(A2;1)

c'est beau la vie non?
 
Tiens met toi la de coté ça peut servir c'est kado 😉
LA fonction
VB:
Function ISOWEEK2007(dat As Date, Optional region = 1): ISOWEEK2007 = DatePart("ww", dat - Weekday(Date, IIf(region = 0, 2, 1)) + 4, 2, 2): End Function
et pour la formule c'est pareil
pour une date en US c'est =ISOWEEK2007(A2;0)
pour une date en FR c'est =ISOWEEK2007(A2;1)

c'est beau la vie non?
Heu..!!
01/01/20 donne 52

Perso, j'utilise celle-ci pour le N° de semaine iso fr
VB:
Function NumSem(dDate As Date) As Integer
    Dim T As Long
    T = DateSerial(Year(dDate + (8 - Weekday(dDate)) Mod 7 - 3), 1, 1)
    NumSem = (dDate - T - 3 + (Weekday(T) + 1) Mod 7) \ 7 + 1
End Function
Dans une cellule
=NumSem(A2)
et
=NO.SEMAINE() pour les US
 
ok elle est bonne
sinon tu a celle la aussi
VB:
Sub test()
    MsgBox ISOWEEK2007US(CDate("01/01/2021"))
End Sub


Function ISOWEEK2007US(dat As Date)
    Dim X&
    X = CLng(dat)
    ISOWEEK2007US = Evaluate("= TRUNC((" & X & "-WEEKDAY(" & X & ",2)+11-DATE(YEAR(" & X & "-WEEKDAY(" & X & " ,2)+4),1,1))/7)")
End Function
 
Bonjour
Merci pour le support donné à ma demande.
J'avance très bien dans mon projet.
J'aimerais afficher le calendrier en faisant un clic droit seulement sur les colonnes A-C-E.
Comment modifier le code?

Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True

If Target(1).Row = 1 Or Target.Columns.Count > 1 Then Exit Sub

Select Case Target.Column

Case 1: Target = Calendar.ShowX(Target(1), 2, 0, 0): ' region = 0 ou "US" Etats Unis

Case 2: Target = Calendar.ShowX(Target(1), 2, 0, 1): ' region = 1 ou "FR" France

Case 3: Target = Calendar.ShowX(Target(1), 2, 0, 2): ' region = 2 ou "CA" Canada

Case Else: Target = Calendar.ShowX(Target(1), 0, 2): 'automatique region

End Select

'Unload Calendar
End Sub
 
re
Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
if not intersect(target,[A:C])is nothing and target.count=1 then
Target = Calendar.ShowX(Target, 2, 0, 1): ' region = 1 ou "FR" France
Cancel = True
end if
End Sub
 
Bonjour
En travaillant avec le calendrier, je viens de réaliser qu'il y a une erreur pour les semaines.
il est disposé du lundi au dimanche alors qu'il doit être du dimanche au samedi si on veut que les # de semaines fonctionnent.
Est-ce possible pour toi de corriger le calendrier pour moi?
 
re
bonjour
du dimanche au samedi c'est pour le mode us

pour le mode fr c'est du lundi au dimanche

c'est a toi de le déterminer dans l'appel

appel français
.cells(1)=Calendar.ShowX(.Cells(1), 2, 0, 1)
1604034029185.png



appel US
.cells(1)= Calendar.ShowX(.Cells(1), 2, 0, 0)

1604033887567.png
 
Re...
Suggestion dans la dernière version 🙄
Paques=Pâques
Fete du travail=Fête du travail
Pentecote=Pentecôte
Asomption=Assomption

Et si tu n'es pas fâché avec les Alsaciens/Mosellans
Ils ont 2 jours de congé supplémentaire.
Vendredi Saint ==>Pâques -2
Saint Etienne==> Noël+1
Mais Chut!!, si le Ministre du moment s'en rend compte, il sera capable de les supprimer.😉
Tu pourrais mettre en commentaire et les Alsaciens/Mosellans valideront.
 
Dernière édition:
re
tiens jacky en attendant que la MSJ soit dispo
VB:
Case 1
        If Weekday(DateSerial(Calendar.Cbyear, Calendar.Cbmonth.ListIndex + 1, ctrlJ.Caption), vbMonday) > 5 Then férié = RGB(200, 150, 150)
        Select Case True   ' Francais,French
        Case dat = CDate("01/01/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Nouvel an"                   '  nouvel an       fixe
        Case dat = CDate("01/05/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "fête du travail"             '  fete du travail fixe
        Case dat = paques: férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Pâques"                                              '  paques ok        calculée
        Case dat = paques + 39: férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Ascension"                                      '  ascension        calculée
        Case dat = paques + 49: férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Pentecôte"                                      '  pentecote        calculée
        Case dat = paques + 50: férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Lundi de Pentecote"                                      '  pentecote        calculée
        Case dat = CDate("08/05/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Fête de la victoire 1945"    '  Victoire 1945    fixe
        Case dat = CDate("14/07/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Fête Nationale"              '  fete nationale   fixe
        Case dat = CDate("15/08/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Assomption"                  '  Assomption       fixe
        Case dat = CDate("01/11/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Toussaint"                   '  Toussaint        fixe
        Case dat = CDate("11/11/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "Armistice 1918"              '  Armistice 1918   fixe
        Case dat = CDate("25/12/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "NOEL"                        '  noel             fixe
        Case dat = paques + 2: férié = RGB(255, 230, 0): ctrlJ.ControlTipText = "(Alsace)Vendredi saint"                          ' (Alsace)Vendredi saint" calculée
        Case dat = CDate("26/12/" & Cbyear.Value): férié = RGB(255, 200, 0): ctrlJ.ControlTipText = "(Alsace) Saint Etienne"      ' (Alsace) Saint Etienne fixe"
😉
 
- 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
16
Affichages
1 K
Réponses
41
Affichages
888
  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
313
  • Question Question
XL 2019 fonction
Réponses
2
Affichages
131
Retour