Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

DATE : Valeur suivante avec condition.

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

et1000lio

XLDnaute Junior
Bonjour à tous

Je "bug" un peu

En cellule B1 je recherche la 1ère valeur en date de la colonne A

Dans l'exemple suivant ceci me donne le 01/03/2012 avec la formule suivante : =PETITE.VALEUR(A1:A10;1)

16/04/2012
08/4/2012
01/03/2012
21/04/2012

Si cette date est inféreure à la date d'AUJOURDHUI() avec la formule suivante =SI(PETITE.VALEUR(D12😀50;1)<AUJOURDHUI();"";PETITE.VALEUR(D12😀50;1))
cela me donne aucun résultat, tout à fait normal.

et ce que je souhaiterai c'est d'obtenir la date suivante supérieure à la date du jour.... Aie.....avez-vous la solution ?

Et1000lio
 
Re : DATE : Valeur suivante avec condition.

Bonjour Émile, Caillou, bonjour le forum,

En formule je sais pas faire... Je te propose une solution VBA avec la macro événementielle ci-dessous :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim da As Date 'déclare la variable da (DAte)
Dim dm As Date 'déclare la variable dm (Date Minimum)

If Target.Address <> "$B$1" Then Exit Sub 'si le double clic a lieu ailleurs qu'en B1, sort de la procédure
Cancel = True 'évite le mode édition lié au double-clic
Set pl = Range("A1:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
dm = Application.WorksheetFunction.Max(pl) 'définit la variable dm (ici, date maximum)
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    If cel.Value > Date Then
        da = cel.Value 'si la valeur de la cellule est supérieure à la date d'aujoud'hui, définit la variable da (valeur de la cellule)
        If da < dm Then dm = cel.Value 'si la valeur de da est inférieure à la variable dm alors redéfinit la variable dm (valeur de la cellule)
    End If
Next cel 'prochaine cellule de la boucle
Target.Value = dm 'affiche dm
End Sub
Double-clique dans B11
Le fichier :
 

Pièces jointes

Re : DATE : Valeur suivante avec condition.

Merci beaucoup Robert,

Cela fonctionne très bien et je me suis même permis de modifier la ligne pour que cette fonction s'applique à supérieur ou égale à la date du jour.....

.....For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
If cel.Value >= Date Then
da = cel.Value 'si la valeur de la cellule est supérieure à la date d'aujoud'hui, définit la variable da (valeur de la cellule)
......
Par contre c'est une action qui est récurrente sur différents onglets (construits de façon identiques), y-a-t-il une solution dans l'environnement "ThisWorkbook" pour que cette VBA soit exploitable dans tous les onglets ?

J'en demande peut-être un peu trop .... mais sait-on jamais ?

Merci
Et1000lio
 
Re : DATE : Valeur suivante avec condition.

Bonjour le fil, bonjour le forum,

En plaçant le code (modifié) dans le composant ThisWorkbook :
Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim da As Date 'déclare la variable da (DAte)
Dim dm As Date 'déclare la variable dm (Date Minimum)

With ActiveSheet
    If Target.Address <> "$B$1" Then Exit Sub 'si le double clic a lieu ailleurs qu'en B1, sort de la procédure
    Cancel = True 'évite le mode édition lié au double-clic
    Set pl = .Range("A1:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
    dm = Application.WorksheetFunction.Max(pl) 'définit la variable dm (ici, date maximum)
    For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
        If cel.Value >= Date Then
            da = cel.Value 'si la valeur de la cellule est supérieure à la date d'aujoud'hui, définit la variable da (valeur de la cellule)
            If da < dm Then dm = cel.Value 'si la valeur de da est inférieure à la variable dm alors redéfinit la variable dm (valeur de la cellule)
        End If
    Next cel 'prochaine cellule de la boucle
Target.Value = dm 'affiche dm
End With
End Sub
La version 2 :
 

Pièces jointes

- 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
20
Affichages
1 K
Réponses
4
Affichages
871
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…