Valeur max avec critère
cajou08
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
cajou08 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
cajou08 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je débute en VBA. Je souhaite écrire une fonction affichant la valeur max d'une plage donnée respectant un certain critère (un mois donné) dans une autre plage.
J'ai trouvé des posts se rapprochant de ma question dans ce forum mais j'aimerais apprendre de mes erreurs en vous proposant ce code.
En m'appuyant sur le code que m'a transmis thev pour la recherche d'occurrences (autre topic), j'en suis là :
Le souci que je rencontre, c'est que la fonction semble retourner la valeur de la cellule la plus "éloignée" dans le tri pour le mois en question et non la valeur max.
Merci par avance de votre aide
Je débute en VBA. Je souhaite écrire une fonction affichant la valeur max d'une plage donnée respectant un certain critère (un mois donné) dans une autre plage.
J'ai trouvé des posts se rapprochant de ma question dans ce forum mais j'aimerais apprendre de mes erreurs en vous proposant ce code.
En m'appuyant sur le code que m'a transmis thev pour la recherche d'occurrences (autre topic), j'en suis là :
Public Function max_m(plage_date As Range, num_mois As Byte, plage_recherche As Range) As Double 'fct max_m : trouve la valeur mensuelle maximale dans une plage donnée 'arg1 : plage_date : plage contenant les dates 'arg2 : num_mois : numéro du mois 'arg3 : plage_recherche : plage contenant les données dont on veut trouver le max For Each élément In plage_date ligne_relative = élément.Row - plage_date.Row + 1 colonne_relative = élément.Column - plage_date.Column + 1 If Month(élément.Value) = num_mois Then max_m = Application.WorksheetFunction.Max(plage_recherche.Cells(ligne_relative, colonne_relative).Value) End If Next End Function
Le souci que je rencontre, c'est que la fonction semble retourner la valeur de la cellule la plus "éloignée" dans le tri pour le mois en question et non la valeur max.
Merci par avance de votre aide
EDIT : Ajout du LANGAGE dans les balises de code.
Explications disponibles ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Valeur max avec critère
- Driver max - Télécharger - Pilotes & Matériel
- I14 pro max - Accueil - Guide téléphones
- Max ou netflix - Accueil - Streaming
- Ajoutez à la liste de contacts ana le goff, inscrite le 27 novembre 2015, dans la catégorie i. puis triez les contacts en les classant : par ordre alphabétique de leur nom de famille (critère principal), puis par date du plus récent au plus ancien (critère secondaire). quel mot apparaît à la verticale dans la colonne "catégorie" entre les lignes 200 et 209 (en-tête compris) ? ✓ - Forum Word
- Réinitialiser kidicom max - Forum Téléphones & tablettes Android
1 réponse
Après réflexion, j'ai amélioré le code qui semble fonctionnel même si j'imagine que ce n'est pas forcément bien écrit (j'ai ajouté un contrôle sur l'année en plus du mois) :
Public Function max_m(plage_date As Range, num_mois As Byte, plage_recherche As Range) As Double 'fct max_m : trouve la valeur mensuelle maximale dans une plage donnée 'carnet entraînement : sortie mensuelle avec le + grand kilométrage 'arg1 : plage_date : plage contenant les dates 'arg2 : num_mois : numéro du mois 'arg3 : plage_recherche : plage contenant les données Application.Volatile Dim annee As Integer 'annee courante du carnet d'entraînement, la valeur est stockée temporairement dans setup.F5 annee = Sheets("setup").Range("F5").Value For Each élément In plage_date ligne_relative = élément.Row - plage_date.Row + 1 colonne_relative = élément.Column - plage_date.Column + 1 If Month(élément.Value) = num_mois _ And Year(élément.Value) = annee Then If plage_recherche.Cells(ligne_relative, colonne_relative).Value > max_m Then max_m = plage_recherche.Cells(ligne_relative, colonne_relative).Value End If End If Next End Function