IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Max calculé sur une partie de cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Points : 76
    Points
    76
    Par défaut Max calculé sur une partie de cellule
    Bonjour,

    Je cherche le max d'une "partie" de colonne. Je m'explique.

    Colonne A (par exemple), j'ai le nom de certains paramètres (a,b,c,...), et colonne B les valeurs mesurées concernant ces paramètres. Seulement, il y a plusieurs mesures concernant le même paramètre, et j'aimerais par exemple connaître le max parmi ces valeurs. Le problème est que je ne peux pas réduire la zone de B1 à B4 par exemple, car le nombre de valeurs mesurées peut varier d'un mois à l'autre. Je joins un fichier excel qui sera plus parlant. Dans cet exemple, comment récupérer la valeur max prise par le paramètre a (là ça va de B1 à B5, mais ça pourrait très bien être autrement) ?

    Merci d'avance !
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Tu peux utiliser la formule matricielle suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(SI(A1:A18="B";B1:B18))
    Formule a confirmer par CTRL+MAJ+ENTREE

  3. #3
    Membre régulier Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Points : 76
    Points
    76
    Par défaut
    Merci pour ta réponse jfontaine, mais je ne suis pas sûr que ce soit ce que j'aimerais.. En effet, dans ta formule tu considère qu'il y a 18 colonnes de remplies, or, de façon générale, je ne saurai pas ! De plus, je fais ça en VBA..
    Je pense qu'il faudrait, "algorithmiquement" parlant, faire quelque chose comme ça:

    tant qu'on trouve le paramètre "a" dans la colonne A, chercher le max des valeurs correspondantes dans la colonne B

    Non ?

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Ci dessous une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function MaxCritere(Critere As String)
     
    Dim i As Long
    Dim Max As Double
     
    For i = 1 To Range("A:A").End(xlDown).Row
        If Range("A" & i).Value = Critere And Range("B" & i).Value > Max Then Max = Range("B" & i).Value
    Next i
     
    MaxCritere = Max
     
    End Function

  5. #5
    Membre régulier Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Points : 76
    Points
    76
    Par défaut
    Merci bien !
    Par contre pour la tester, j'ai besoin de quelques précisions.. Débutant totalement en VBA, dois-je insérer cette fonction dans le "module" à la suite du reste du code, puis l'appeler en suivant ?

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    En effet,ce code doit etre copier dans un module et peut être appelé
    soit par VBA
    soit en tant que formule dans une feuille

  7. #7
    Membre régulier Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Points : 76
    Points
    76
    Par défaut
    Ok merci. Par contre, me concernant, je souhaiterais l'utiliser dans une instruction du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = ?

  8. #8
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value=MaxCritere("a")

  9. #9
    Membre régulier Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Points : 76
    Points
    76
    Par défaut
    Bon... Je viens de le tester, j'ai "0" qui s'affiche comme résultat.. Donc ça ne va pas, je dois mal faire les choses.. J'ai placé la fonction dans le module2, et je l'ai appelée dans le module1 avec le reste du code. Je ne vois pas de quoi cela peut venir.. Veux-tu que je t'envoie un exemple de fichier similaire au mien pour voir si tu comprends ce qui ne va pas ?

    Je rajoute que c'est forcément mon code qui est mal "agencé", car ta fonction fait ce que je voulais (je l'ai essayée via =MaxCritere("a")) et ça me retourne bien la bonne valeur.

    C'est à n'y rien comprendre: =MaxCritere("a")) fonctionne, mais pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    res = MaxCritere("a")
     MsgBox res
    (renvoie 0)

Discussions similaires

  1. [Toutes versions] Protection sur une partie des cellules provoque une erreur à l'éxécution de la macro
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/01/2012, 15h36
  2. [XL-2003] Somme conditionnelle avec condition sur une partie de cellule + RechercheV
    Par Benoit Schwob dans le forum Excel
    Réponses: 13
    Dernier message: 28/04/2011, 23h26
  3. [XL-2003] Calcul sur une plage de cellules
    Par kokoVBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/08/2009, 10h35
  4. Calcul sur une partie d'un tableau défini sous VBA
    Par VBA_LOVER dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2009, 12h27
  5. Equivalent de RECHERCHEV sur une partie de cellule
    Par LaPanic dans le forum Excel
    Réponses: 3
    Dernier message: 28/10/2008, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo