Rechercher : dans
Par :

[excel VBA] transcrire la fonction max

Dernière réponse le 15 oct 2009 à 18:39:00 Anne-Sophie, le 7 déc 2006 à 15:35:16 
 Signaler ce message aux modérateurs

Bonjour,

Je souhaiterais savoir comment s'écrit la fonction excel max en VBA car je veux que dans une cellule, s'inscrive le nombre le plus élevé qui figure dans les cellules B9 à L9.
J'ai écrit activecell.Offset(11,7).value= max(range("B9 : L9")) mais quand j'éxécute ma macro, ça m'indique "erreur de compilation: sub ou fonction non définie". Et je n'arrive pas à résoudre le problème.

Dernière question: comment faire pour que excel inscrive dans une autre cellule la colonne dans laquelle figure le plus grand nombre dans la plage de cellules B9 à L9.
Pour être plus claire: les cellules B9 à L9 correspondent à des totaux. Je voudrais qu'excel inscrive dans une cellule le résultat le plus élevé (de B9 à L9) et qu'ensuite il inscrive dans une autre cellule la colonne qui correspond au chiffre le plus grand.

D'avance merci.

Meilleures réponses pour « [excel VBA] transcrire la fonction max » dans :
[VBA] RechercheV Polyvalente VoirRECHERCHEV POLYVALENTE Pour les accros et les inconditionnels des fonctions d'Excel, avant de crier au scandale, lisez les quelques lignes suivantes. La RechercheV d'origine a beaucoup de limites: La colonne de la donnée doit être avec un...
[VBA] Fonction qui retourne la couleur active d'une MFC VoirCette fonction retourne la valeur du format actif d'une mise en forme conditionnelle. Avec la fonction de la démo, deux valeurs peuvent êtres retournées. Mode = 0 : retourne la valeur de Interior.ColorIndex Mode = 1 : retourne la valeur de...

1

Lupin.A, le 7 déc 2006 à 18:20:38
  • +7

Bonjour,

Démonstration:

Sub Test_Max_Sum()

    Dim Cellules As Range
    Dim LaCel As Range
    
    Set Cellules = Range("B9:L9")
    
    Set Cellules = ActiveSheet.Range("B9:L9")
    Range("B11").Value = Application.WorksheetFunction.Sum(Cellules)
    Range("B12").Value = Application.WorksheetFunction.Max(Cellules)
    
    For Each LaCel In Cellules
        If (LaCel.Value = Range("B12").Value) Then
            Range("B13").Value = LaCel.Column
            'Range("B13").Value = LaCel.Address
        End If
    Next
    
    
    Range("A1").Select
    
End Sub


Lupin

Répondre à Lupin.A

2

anne-sophie, le 8 déc 2006 à 10:16:09

Merci beaucoup. :-)
Votre aide me retire une épine du pied, car c'est pour mon travail que je dois faire ceci.
Merci encore.

Répondre à anne-sophie

3

Lupin.A, le 9 déc 2006 à 00:17:58

Re:

ce fut un plaisir, et si vous avez d'autres difficultés, n'hésité
par à revenir dans ce fil de discussion. Le reconnaissance
m'inspire toujours.

Lupin

Répondre à Lupin.A

4

Pier-3d, le 9 mar 2009 à 15:52:31
  • +1

Bonjour,

Je suis moi-même un néophyte et je me pose des questions en lisant le code
affiché ci-dessus.

Ces lignes ne sont-elles pas une répétition ?

Set Cellules = Range("B9:L9")
Set Cellules = ActiveSheet.Range("B9:L9")
Et ici :
Range("B11").Value = Application.WorksheetFunction.Sum(Cellules)
Range("B12").Value = Application.WorksheetFunction.Max(Cellules)
Je ne comprends vraiment pas. Vous modifiez les valeurs de B11, B12 et plus loin B13
alors que, dans l'énoncé du problème, ces cellules font partie de la plage à examiner
par la fonction Max().

Et, finalement...
Range("B12").Value = Application.WorksheetFunction.Max(Cellules)
... cette ligne n'est-elle pas en elle-même une réponse complète au problème énoncé
par Anne-Sophie ?

Je ne connaissais pas la méthode « Application.WorksheetFunction ». Je viens d'apprendre
quelque chose de nouveau qui va m'être très utile. Merci beaucoup.

Je ne sais pas si je contreviens aux règles du forum en écrivant ce message qui est plutôt
une sous-question ? Si oui, aurait-il mieux d'adresser un message privé à M. Lupin ?


Pierre Cloutier

Répondre à Pier-3d

5

Lupin.A, le 10 mar 2009 à 01:56:19
  • +1

Bonjour,

Votre observation est tout à fait pertinente, et vous avez presque raison !

Il faut être capable de définir la plage

Set Cellules = Range("B9:L9")

est aussi un minimum bien que très peu explicite,
et la déclaration de la plage doit correspondre à la fonction demandé
qui est :
Application.WorksheetFunction.Max

Le Membre [ WorksheetFunction ] implique une feuille,
donc je recommande d'utilisé de façon plus explicite
la déclaration de la plage à une feuille :

Set Cellules = ActiveSheet.Range("B9:L9")
ou
Set Cellules = Sheets("MaFeuille").Range("B9:L9").

Un exemple frappant sur la façon d'appeller une fonction :-)
InputBox
Application.InputBox
Vous devriez y voir une différence :-)

et vous êtes bienvenue tout autant que moi,
pour ma part je suis un étranger ici :-)

quand j'ai du temps :-)
et parfois je code en quelques minutes ces jets d'improvisations,
je les tests et j'ai du probablement du rajouter la spécification
de la feuille en oubliant d'enlever la première ligne.

Lupin

Répondre à Lupin.A

6

 GafsiTN, le 15 oct 2009 à 18:39:00

Bonjour à tous,
Y'a -t un code VBA ou une formule qui me permet de résoudre ce problème?
Article Version Indice
IBB102110 0
IBB102110 5
IBB102110 9 OK
IBB102110 9 OK
IBB102194 3
IBB102194 3
IBB102194 3
IBB102194 4 OK
IBB102194 4 OK
IBB102194 4 OK
Je veux mettre dans une colonne un idex qui me dit que la dernière version est est la plus élevé
Je sais que c'est simple avec 5 lignes mais j'ai 17000 références à déterminer leurs dernières versions

Merci pour votre aide

Répondre à GafsiTN