rechercher valeur associée au début et fin du mois (rechercheV???)

n00bi

XLDnaute Nouveau
bonjour
j'ai un tableau avec en colonne A les dates par ordre chronologique.

j'ai décomposé ces dates en année, mois, jour dans les colonnes B C et D.

en colonne E, j'ai le chiffre d'affaire de chaque jour par exemple.

j'aimerai récupérer le chiffre d'affaire du premier et dernier jour de chaque mois.
j'essaye avec la fonction recherchev mais je bloque.
(voir cellules jaunes dans mon fichier exemple)

vous pouvez m'aider à faire une fonction svp?

merci
 

Pièces jointes

  • test.xlsx
    16.7 KB · Affichages: 37

thebenoit59

XLDnaute Accro
Bonjour n00bi.
Je pars du principe que tes dates sont toujours triées par ordre croissant.
Egalement en colonne F, il faut écrire les mois correctement.

Une fonction Index combinée avec une matricielle.
 

Pièces jointes

  • xlDown - n00bi - rechercher valeur associée au début et fin du mois.xlsx
    13.7 KB · Affichages: 39

n00bi

XLDnaute Nouveau
merci!*je vais regarde la version index combinée.

Impréssioné par la macro avec la touche GO.
comment je peux accéder au code pour voir comment ca a été écrit?
sinon, tu peux m'expliquer rapidement ton raisonnement pour faire cet algortihme?
 

pierrejean

XLDnaute Barbatruc
Re

Macro commentée

Sub test()
'definition du debut
debut = Range("C2")
'creation d'un tableau de resultat
ReDim tabres(1 To 4, 0)
'premieres données inscrites dans le tableau
tabres(1, 0) = Range("B2")
tabres(2, 0) = Format(Range("A2"), "mmmm")
tabres(3, 0) = Range("E2")
'on augmente le tableau d'une ligne
ReDim Preserve tabres(1 To 4, UBound(tabres, 2) + 1)
'pour chaque ligne jusqu'a la derniere ligne non vide de la colonne C
For n = 2 To Range("C" & Rows.Count).End(xlUp).Row
'si la donnéée colonne C est differente du debut
If Range("C" & n) <> debut Then
'remplir le tableau
'l'annee
tabres(1, UBound(tabres, 2)) = Range("B" & n)
'le mois
tabres(2, UBound(tabres, 2)) = Format(Range("A" & n), "mmmm")
'le chiffre du debut
tabres(3, UBound(tabres, 2)) = Range("E" & n)
'le chiffre de fin (ligne precedente dans ligne precedente du tableau)
tabres(4, UBound(tabres, 2) - 1) = Range("E" & n - 1)
'on augmente le tableau d'une ligne
ReDim Preserve tabres(1 To 4, UBound(tabres, 2) + 1)
'le debut devient le nouveau mois
debut = Range("C" & n)
End If
Next
'mise du dernier chiffre de fin dans le tableau
tabres(4, UBound(tabres, 2) - 1) = Range("E" & n - 1)
'ecriture du tableau
Range("H3").Resize(UBound(tabres, 2) + 1, UBound(tabres, 1)) = Application.Transpose(tabres)
End Sub
 

Pièces jointes

  • test (45).xlsm
    29.6 KB · Affichages: 17

thebenoit59

XLDnaute Accro
merci

mais j'ai un 1er problème
je comprends pas la 1ere version avec les formules excel.

je pensais avoir un minimun de niveau en excel...
je déchange.

quelqu'un peut m'expliquer pourquoi on cherche le min pour la date la plus proche?

Bonjour n00bi.
La fonction Mois récupère le numéro du mois.
Si le mois est en texte tu auras une erreur, d'où l'utilisation de MOIS(F3&1).
Ensuite nous ne récupérons pas le minimum d'une date, mais la ligne minimale soit la première ligne où apparaît ce mois.
C'est pour ça que je faisais remarqué que la fonction ne fonction seulement si les dates sont en ordres croissantes.
J'utilise le MAX pour la fin de mois.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260