Mise à jour d'un tableau en fonction d'une date de début et une date de fin

Bonjour.

Je vous contact car je n'arrive à trouver une solution pour adapter dynamiquement le nombre de ligne dans mon tableau en fonction de deux variables. Ces variables sont une date de début et un date de fin situées dans la feuille "Simulateur Calculatrice Pos.".

Ce que je souhaite, c'est que dans la feuille "Simulateur Gains" la deuxième ligne du tableau corresponde à la date de départ et que la dernière ligne corresponde à la date finale. Et entre c'est deux retrouver les autres dates.

Bien entendu en modifiant ces deux critères, le tableau doit s'adapter dynamiquement.

Autre variable qui doit s'adapter, c'est une somme qui s'effectue sur l'année ou les années sélectionnées grâce aux variables dates dans le bas de la feuille "Simulateur Calculatrice Pos.".

Pour illustrer ma demande, je vous joints le travail que j'ai déjà réalisé.

Par avance, merci pour votre aide.

Bonne journée à toutes & à tous.

Bonjour,

Il y a quelque chose qui est flou dans votre explications. Lorsque vous dites DATE DEBUT/DATE FIN ce sont les cellules H11 et H12 ou E11 et E12 de la feuille Simulateur Calculatrice ? Dans quelles cellules renseignez vous vos dates ?

Un filtre du tableau Simulateur Gains par VBA lors du changement de ces date est-il envisageable ?

Pour les cellules D45 a D47 de la feuille Simulateur Calculatrice, nous sommes d'accord que les années sont celles comprises entre DATE DEBUT et DATE FIN ? Nous n'aurons jamais plus de 3 années sur la période ?

En vous remerciant pour ces précisions qui nous aideront à proposer une solution la plus adaptée possible.

Cdlt,

Bonjour Ergotamine.

Tout d'abord, merci pour votre réponse.

Concernant vos interrogations, voici mes réponses.

  • Lorsque vous dites DATE DEBUT/DATE FIN ce sont les cellules H11 et H12 ou E11 et E12 de la feuille Simulateur Calculatrice ? Dans quelles cellules renseignez vous vos dates ?
    • Il s'agit des cellules E11 et E12 de la feuille "Simulateur Calculatrice Pos." Les dates sont renseignées manuellement dans ces cellules.
  • Un filtre du tableau Simulateur Gains par VBA lors du changement de ces date est-il envisageable ?
    • Cela est possible. Mais une question me vient. Que se passerait-il si la date de fin (renseignée en E12 dans la feuille "Simulateur Calculatrice Pos.") est supérieur à la dernière date renseigné dans le dernier rang du tableau dans la feuille "Simulateur Gains" ?
  • Pour les cellules D45 a D47 de la feuille Simulateur Calculatrice, nous sommes d'accord que les années sont celles comprises entre DATE DEBUT et DATE FIN ? Nous n'aurons jamais plus de 3 années sur la période ?
    • Oui, celle-ci doivent être comprises entre ces deux dates. Nous pourrions avoir plus de trois ou moins, tout dépend de ce qui est saisi dans les champs DATE DEBUT et DATE FIN.

J'espère que mes réponses auront été assez claires et auront pu vous aider à mieux comprendre mon problème et mon besoin.

Cordialement

Bonjour,

Voilà qui me semble fonctionner :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DEB As Date, FIN As Date
If Not Application.Intersect(Target, [E11:E12]) Is Nothing And [E11] <> "" And [E12] <> "" Then
    DEB = Format(Worksheets("Simulateur Calculatrice Pos.").[E11], "mm/dd/yyyy")
    FIN = Format(Worksheets("Simulateur Calculatrice Pos.").[E12], "mm/dd/yyyy")
    With Worksheets("Simulateur Gains").ListObjects("Positions")
        .AutoFilter.ShowAllData
        .Range.AutoFilter 1, ">=" & DEB, xlAnd, "<=" & FIN
    End With
    With Worksheets("Simulateur Calculatrice Pos.")
        .Rows("45:54").Hidden = True
        .Rows(45).Resize(DateDiff("yyyy", DEB, FIN) + 1, 1).EntireRow.Hidden = False
    End With
End If
End Sub

Lorsque vous modifiez une date, tout se met à jour. Si la date est dépassée cela n'a pas d'incidence sur le filtre. Le code se trouve dans le module de la feuille 1.

Pour la dernière remarque je me suis laissé de la marge sur plus d'année et ne fonctionne que via un masquage/affichage des lignes, c'est ce que j'ai trouvé le plus simple.

Cdlt,

Bonjour Ergotamine.

Je m'excuse pour le retard de réponse. Je voulais avancer sur mon tableur avant d'intégrer votre proposition.

Pour ce qui est de la partie "Somme des virements par année", tout fonctionne parfaitement.

Par contre dans la feuille "Simulateur de gains", tous est décoché lorsque je sélectionne les dates. Avez-vous une idée d'où cela peut provenir.

Je vous joins le fichier excel avec le test que j'ai effectué afin que vous puissiez voir de quel façon j'ai tester la macro.

Bonne journée à vous.

Cordialement

Bonjour,

Vous avez placé un renvoi a E11 en E7 ce qui fait buguer le filtre. Si à chaque fois que vous inscrivez une date en E11 vous souhaitez qu'elle soit en E7 de la feuille 2 dans ce cas :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DEB As Date, FIN As Date
If Not Application.Intersect(Target, [E11:E12]) Is Nothing And [E11] <> "" And [E12] <> "" Then
    With Worksheets("Simulateur Gains").ListObjects("Positions")
        DEB = Format(Worksheets("Simulateur Calculatrice Pos.").[E11], "mm/dd/yyyy")
        FIN = Format(Worksheets("Simulateur Calculatrice Pos.").[E12], "mm/dd/yyyy")
        Worksheets("Simulateur Gains").[E7] = [E11]
        .AutoFilter.ShowAllData
        .Range.AutoFilter 1, ">=" & DEB, xlAnd, "<=" & FIN
    End With
    With Worksheets("Simulateur Calculatrice Pos.")
        .Rows("45:54").Hidden = True
        .Rows(45).Resize(DateDiff("yyyy", DEB, FIN) + 1, 1).EntireRow.Hidden = False
    End With
End If
End Sub

Cdlt,

D'accord.

Je comprends. Merci votre correction & votre patiente.

Mon problème est résolus

Merci encore Ergotamine.

Bonne fin de journée.

Rechercher des sujets similaires à "mise jour tableau fonction date debut fin"