Valeur Max d'une colonne en fonction d'une période

Bonjour à tous !

De retour avec un soucis...

Ci-joint un fichier exemple :

(modification du fichier suite remarque d'Amadeus )

il manque le code VBA pour afficher la valeur MAX +1 d'une colonne, mais en fonction d'une période délimitée par une date de début _D et une date de fin _F.

Comme cela doit être trouvé lors de la saisie d'une nouvelle date, je souhaiterai que le fonctionnement soit par VBA, afin d'avoir l'écriture "automatique" sur la cellule "n°" en face de la date.

Le fichier est plus explicite.

Merci par avance

Bonjour

Dans ton exemple

_

D=01/11/2013

_F=05/01/2014

en vert les dates qui sont comprises entre _D et _F inclus

Les dates à partir de la ligne 10 sont toutes > _F et sont pourtant en vert

???

Cordialement

c'est corrigé...

un reste de test.... en fait la période va du 1/11 de l'année N au 31/10 de l'année N+1

@ bientôt

LouReeD

Bonjour Rock n'Roll Animal, bonjour le forum,

Tes couleurs sont complètement erronées !...

Une proposition :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TV As Variant
Dim DD As Variant
Dim DF As Variant
Dim DR As Variant
Dim TL() As Variant
Dim M As Integer

If Target.Count > 1 Or Target.Value = "" Then Exit Sub
If Not Intersect(Target, Range("A5:A" & Cells(Cells.Rows.Count, 1).End(xlUp).Row + 1)) Is Nothing Then
    MsgBox ("Une date entrée, recherche de la valeur MAX de la colonne parmis les dates comprises entre la date de début et la date de fin")
End If
TV = Range("A5:B17")
DD = DateSerial(Year([_D]), Month([_D]), Day([_D]))
DF = DateSerial(Year([_F]), Month([_F]), Day([_F]))
J = 1
For I = 1 To UBound(TV, 1)
    DR = DateSerial(Year(TV(I, 1)), Month(TV(I, 1)), Day(TV(I, 1)))
    If DR >= DD And DR <= DF Then
        ReDim Preserve TL(J)
        TL(J) = TV(I, 2)
        Debug.Print TL(J)
        J = J + 1
    End If
    'DR = Nothing
Next I
M = Application.WorksheetFunction.Max(Application.Index(TL, 0))
Range("B18").Value = M + 1
End Sub

Bonjour LouReed,

bonjour tout le monde,

si j'ai bien compris. Il m'a fallu un peu de temps pour comprendre que les couleurs vertes, effectivement, ne correspondaient pas!

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim dDate1, dDate2, dDate3 As Date
Dim iFlag As Integer
'
dDate1 = Cells(1, 2)
dDate2 = Cells(2, 2)
iRow1 = Range("A" & Rows.Count).End(xlUp).Row
iRow2 = Range("B" & Rows.Count).End(xlUp).Row
'
If Target.Count > 1 Or Target.Value = "" Then Exit Sub
If Not Intersect(Target, Range("A5:A" & iRow1)) Is Nothing Then
    For x = 5 To iRow2
        dDate3 = Cells(x, 1)
        If (dDate3 >= dDate1 And dDate3 <= dDate2) And Cells(x, 2) > iFlag Then iFlag = Cells(x, 2)
    Next
    Target.Offset(0, 1) = iFlag + 1
End If
'
End Sub

A+

Bonjour !

et merci aux intervenants !!!!

Oui en effet ThauThème il y a avait une erreur sur le fichier mais je crois que je l'ai corrigé...

Pour ce qui est du code, en fait je me sent bête...

Je pensais naïvement qu'il y avait une solution par "fonction" sous VBA qui permettait de faire une recherche sur plusieurs colonnes comme un SOMMEPROD ou un SOMME.SI.ENS...

En fait en regardant le code c'est de la boucle sur les cellules...

Donc j'ai adapté le code de curilis57 !

Merci à vous deux pour les propositions !

@ bientôt

LouReeD

Rechercher des sujets similaires à "valeur max colonne fonction periode"