Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

valeur max en fonction de deux autres colonnes

  • Initiateur de la discussion Initiateur de la discussion Raphael35
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

Raphael35

Guest
Bonjour,

J'ai un fichier avec des nom de puits, les ages géologiques et une mesure géochimiques du TOC.

Je cherche une macro pour ne garder que la valeur maximale par age et par puits. Par exemple pour le puits 73/13-1, je voudrais la valeur maximale de toc du Lower jurassic, celle du lower cretaceous, etc pour chaque puits.

J'ai essayé de combiner des macros trouvées sur ce site mais je dois avouer que c'est un échec ...

Merci par avance pour votre aide.
 

Pièces jointes

Dernière modification par un modérateur:
Re : valeur max en fonction de deux autres colonnes

Bonjour le forum,

G1 :
Code:
=MAX(SI((A1:A1000=E1)*(B1:B1000=F1);C1:C1000))
Formule matricielle à valider avec : CTRL MAJ ENTREE

 
Re : valeur max en fonction de deux autres colonnes

Bonjour,

Merci pour votre réponse.

Il y a un problème, en fait dès qu'il atteint la valeur max, il reprend son calcul. Par exemple ici quand il arrive à 21.25 :

73/13-1 Unknown 0.18 73/13-1 Unknown 21.25
73/13-1 Unknown 1.25 73/13-1 Unknown 21.25
73/13-1 Unknown 0.94 73/13-1 Unknown 21.25
73/13-1 Unknown 21.25 73/13-1 Unknown 21.25
73/13-1 Unknown 9.64 73/13-1 Unknown 9.64
73/13-1 Unknown 2.17 73/13-1 Unknown 2.17
73/13-1 Unknown 0.95 73/13-1 Unknown 0.95
73/13-1 Unknown 0.13 73/13-1 Unknown 0.28
73/13-1 Unknown 0.08 73/13-1 Unknown 0.28
73/13-1 Unknown 0.23 73/13-1 Unknown 0.28
73/13-1 Unknown 0.24 73/13-1 Unknown 0.28
73/13-1 Unknown 0.28 73/13-1 Unknown 0.28


De plus il y a un message d'erreur (un point d'exclamation sur le coté de la cellule) qui me dit que "la formule omet les cellules adjacentes".
 
Re : valeur max en fonction de deux autres colonnes

Bonjour Raphael35, excfl

un essai par macro:

Code:
Sub TriMax()
 Dim Dico1, Dico2, TabPuits, TabAge, TabFin()
 Dim DerL As Long
 Set Dico1 = CreateObject("Scripting.Dictionary")
 Set Dico2 = CreateObject("Scripting.Dictionary")

 Application.ScreenUpdating = False

 With Worksheets("Feuil1")
 DerL = .Range("A" & Rows.Count).End(xlUp).Row
 TabPuits = .Range("A2:A" & DerL)
 For i = LBound(TabPuits) To UBound(TabPuits)
    Dico1(TabPuits(i, 1)) = ""
 Next

For Each Puits In Dico1
    .Range("A1:C" & DerL).AutoFilter Field:=1, Criteria1:=Puits
    TabAge = .Range("A2:c" & DerL).SpecialCells(xlVisible)

    For i = LBound(TabAge) To UBound(TabAge)
        If Dico2.Exists(TabAge(i, 2)) Then
            If TabAge(i, 3) > Dico2(TabAge(i, 2)) Then Dico2(TabAge(i, 2)) = TabAge(i, 3)
        Else
            Dico2(TabAge(i, 2)) = TabAge(i, 3)
        End If
    Next
    
    For Each Age In Dico2
        Ind = Ind + 1
        ReDim Preserve TabFin(1 To 3, 1 To Ind)
        TabFin(1, Ind) = Puits
        TabFin(2, Ind) = Age
        TabFin(3, Ind) = Dico2(Age)
    Next
    
    Dico2.RemoveAll
    .Range("A1:C" & DerL).AutoFilter
 Next
    .Range("E2").Resize(UBound(TabFin, 2), UBound(TabFin, 1)) = Application.Transpose(TabFin)
 End With
 Application.ScreenUpdating = True
End Sub

le résultat est copié à partir de E2

NB Nécessite d'ajouter la référence : Microsoft Scripting Runtime dans Outils, Références de la Feuille VBE

A+
 
Re : valeur max en fonction de deux autres colonnes

Bonjour à tous.


À Paf :


  • Tant qu'à déclarer et typer les variables, autant les déclarer toutes :
    Code:
    Dim i&, Puits, AGE, Ind&
    Dim Dico1, Dico2, TabPuits, TabAge, TabFin()
    Dim DerL As Long
    Set Dico1 = CreateObject("Scripting.Dictionary")
    Set Dico2 = CreateObject("Scripting.Dictionary")
    L'exécution n'en sera que plus rapide.

  • Comme il est rédigé, votre code ne nécessite pas d'ajouter la référence Microsoft Scripting Runtime au projet.
    Par contre, la déclaration de cette référence est nécessaire si vous déclarez
    VB:
    Dim Dico1 As New Scripting.dictionary, Dico2 As New Scripting.dictionary
    Dans ce cas, il convient bien sûr de supprimer
    Code:
    Set Dico1 = CreateObject("Scripting.Dictionary")
    Set Dico2 = CreateObject("Scripting.Dictionary")


Bonne journée.


ℝOGER2327
#7936


Lundi 9 Gidouille 142 (Sainte Outre, psychiatre - fête Suprême Quarte)
5 Messidor An CCXXIII, 5,2992h - mulet
2015-W26-2T12:43:05Z
 
Re : valeur max en fonction de deux autres colonnes

Re tous et bonjour ROGER2327


@ ROGER2327

merci pour tous ces conseils,

pour les déclarations j'ai omis les variables i et Ind. Quant à Puits et Age j'ai fait l'impasse, ne sachant pas quel type leur attribuer.

Comme il est rédigé, votre code ne nécessite pas d'ajouter la référence Microsoft Scripting Runtime au projet.

j'avais rencontré quelques soucis qui avaient nécessité l'ajout de cette référence . Après quelques tests cette référence n'est, effectivement, pas nécessaire

A+
(réponse tardive due à coupure ( au sens propre) de ma ligne téléphonique)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Q
Réponses
3
Affichages
1 K
queen_s
Q
A
Réponses
1
Affichages
1 K
A
E
Réponses
5
Affichages
2 K
Elmarabout
E
S
Réponses
9
Affichages
3 K
Ste Barbe
S
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…