Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

sourcier08

XLDnaute Occasionnel
Bonjour à tous,

Je suis devant un problème que je n'arrive pas à résoudre.

J'ai une multitude d'onglets contenant tous des tableaux identiques (ça facilite les choses) et j'aimerai que sur l'onglet Accueil viennent se placer les deux valeurs max relevées, le type d'huile et le numéro de semaine de chaque onglet concerné. (je préfère les deux valeurs max à une seule car il est probable qu'il y ait 2 fois la même valeur dans un onglet)

Pour faciliter la chose, j'ai nommé des cases au même nom que les onglets.

J'ai opté pour une macro (nommée Max) mais je ne sais pas comment trouver les deux valeurs max.
Si on peut le faire par formule, je prends aussi. L'important, est d'arriver au résultat voulu.


Merci d'avance pour l'aide.


[EDIT - 17h30] Oups, j'avais oublié 2 machines. Fichier modifié !
 

Pièces jointes

  • graissage.xlsm
    143.4 KB · Affichages: 51
  • graissage.xlsm
    143.4 KB · Affichages: 55
  • graissage.xlsm
    143.4 KB · Affichages: 53
Dernière édition:

sourcier08

XLDnaute Occasionnel
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

Je viens de me replonger dedans, j'ai finalisé la recherche de la plus grande valeur de chaque onglet.

Code:
Sub Max()
Dim MyRange As Range
Dim reponse As String, trouve1 As String, trouve2 As String
Dim x As Integer, y As Integer

For Each cell In Sheets("saisie").Range("liste")

    Set MyRange = Sheets(cell.Value).Range("B4:S31")
    
    reponse = Application.WorksheetFunction.Max(MyRange)
    
    If reponse <> "0" Then
    
        x = Sheets(cell.Value).Range("B4:S31").Find(reponse).Row
        y = Sheets(cell.Value).Range("B4:S31").Find(reponse).Column
        
        trouve1 = Right(Sheets(cell.Value).Cells(x, 1), 2)
        trouve2 = Sheets(cell.Value).Cells(3, y)
        
        Sheets("Accueil").Range("B1:T45").Find(cell.Value).Offset(1, 1) = trouve2
        Sheets("Accueil").Range("B1:T45").Find(cell.Value).Offset(1, 2) = reponse
        Sheets("Accueil").Range("B1:T45").Find(cell.Value).Offset(1, 3) = trouve1
    End If
    
Next cell

End Sub

Mais je ne sais toujours pas comment faire pour tirer la seconde plus grande valeur ainsi que l'huile et la semaine associée à celle-ci.

Si quelqu'un a une idée pour la suite, je suis preneur.
 

Yaloo

XLDnaute Barbatruc
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

Bonsoir sourcier08,

Voici une macro correspondant en partie à ta demande, en partie car elle ne prend qu'une seule valeur.

VB:
Sub Essai()
Dim i&, c&, l&, m1&, m2&, m3$, n$, x&
Sheets("Accueil").Activate
For i = 3 To 43 Step 4
  For c = 2 To 17 Step 5
    If Cells(i, c) <> "" Then
      n = Cells(i, c)
      Set Ws = Sheets(n)
      With Ws
        For j = 4 To 31
          x = Application.WorksheetFunction.Max(Ws.Rows(j))
          If x = 0 Then GoTo Suite
            If x > m1 Then
              l = Application.Match(x, Application.Transpose(.Rows(j)))
              m1 = .Cells(j, l): m2 = Right(.Cells(j, 1), 2): m3 = .Cells(3, l)
            End If
Suite:
        Next
      End With
    Cells(i, c).Offset(1, 1) = m3: Cells(i, c).Offset(1, 2) = m1: Cells(i, c).Offset(1, 3) = m2
    m1 = 0: m2 = 0: m3 = 0
    End If
  Next
Next
End Sub

Je vois demain s'il est possible de la modifier pour avoir 2 valeurs.

A te relire

Martial
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

Bonjour sourcier08 , Yaloo, klin89

Pas certain d'avoir bien compris la demande. Ce que j'en ai compris:
Pour un onglet donné, on recherche parmi toutes les huiles et pour toutes les semaines, les deux quantités les plus grandes. A ces deux quantités, on associe les huiles et semaines correspondantes. On affiche ces données dans le tableau de l'onglet "Accueil" correspondant à l'onglet de recherche.

Un essai par formules dans le fichier joint.

J'ai modifié la colonne des semaines. Elle contient maintenant un nombre (le numéro de semaine) et le texte "Semaine " a été rajouté via un format personnalisé.

Des formules (dont une partie matricielle à valider par Ctrl+Maj+Entrée) ont été rajoutées dans les cellules B33 à B38 pour trouver les valeurs qui nous intéressent. Elles sont recopiables par copier/coller d'un tableau à l'autre.

Dans l'onglet "Accueil", les formules sont de simples INDIRECT allant chercher les valeurs de l'onglet correspondant. Au sein de l'onglet "Accueil" les formules sont recopiables par copier/coller d'un p'ti tableau à l'autre.

NB: Pour la recherche, les tableaux sont parcourus ligne par ligne, et pour chaque ligne, de gauche à droite. Cela peut-être modifié si on le désire; par exemple si on veut (en cas de plusieurs max identiques) le plus récent et non pas le plus vieux.

rem: la structure du fichier (onglets à structure identique - nommage identique des onglets et des tableaux de la feuille Accueil) a grandement préparé et facilité le travail.
 

Pièces jointes

  • graissage - formule - v1.xlsm
    160.8 KB · Affichages: 43
Dernière édition:

sourcier08

XLDnaute Occasionnel
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

Merci klin mais...

Si je remplace Max par large et que j'ajoute ",1" après Myrange, j'obtiens une erreur après la 4ème donnée transférée.
Impossible de lire l'application large de Worksheetfunction.

J'ai bien regardé l'aide mais ça ne m'aide pas du tout. Pourtant, c'est clair que ça doit être cette méthode qui doit être employée dans mon cas.
Me reste plus qu'à comprendre comment l'utiliser. Je sens que je vais en baver là.

[EDIT]
Bonjour et merci mapomme, c'est parfait comme ça.
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

Re,

Solution avec macro, dont la méthode Large indiquée par klin

Mise à jour par activation de la feuille Accueil.

A+
 

Pièces jointes

  • graissage.xlsm
    152.2 KB · Affichages: 42
  • graissage.xlsm
    152.2 KB · Affichages: 40
  • graissage.xlsm
    152.2 KB · Affichages: 42

gmb

XLDnaute Junior
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

Bonjour
Avec un peu de retard sur les autres, j'apporte ma version.
Moins élégante que celle de Yaloo, elle n'utilise pas la méthode Large que je n'avais pas retrouvé. Merci à Yaloo me l'avoir rappelé.
Mais elle m'a permis de détecter une anomalie : l'onglet OP 135 n'était pas pris en compte dans la feuille d'Accueil où je l'ai rajouté .......
 

Pièces jointes

  • graissage V1.xlsm
    157.1 KB · Affichages: 38

Yaloo

XLDnaute Barbatruc
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

Bonjour à tous,

Comme me l'a fait si justement remarqué mapomme (que je salue et félicite par ses formules et sa macro) , ma macro ne renvoie pas le résultat, car s'il y a des doublons, la macro renvoie la première occurrence 2 fois.

A+
 

sourcier08

XLDnaute Occasionnel
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

Bonjour à tous et merci.
Je peux mourir moins con là. Du bon boulot de fait là !

J'ai la version formule et macro. Je vais regarder de près ça pour comprendre.
Les formules ne sont pas mon fort. Et les matricielles encore moins.
Faudrait vraiment que j'envisage de demander à mon employeur une longue formation EXCEL. :)

@+
 

sourcier08

XLDnaute Occasionnel
Re : Problème pour 2 valeurs Max à chercher sur plus de 30 feuilles

gmb,

Merci pour la remarque OP135 mais il y a de fortes chances pour que je supprime quelques OP qui n'ont que peu ou pas de consommation d'huile. Pour l'heure, j'ai envisagé que ça fuyait de partout ^^
Mais, j'avais bien oublié de la mettre celle-là...

Mon employeur m'a demandé de faire le suivi des consos d'huile afin de détecter les surconsommations (surcoûts). Il doit encore me fournir les consommations théoriques de chaque OP, que je devrai inclure dans mes données afin de ne reprendre que les valeurs MAX qui sont au dessus de la conso théorique.
Si je garde la version formule, je sais que je vais devoir modifier les formules dans l'accueil avec un petit SI.
Si je le fais par macro, je n'ai pas encore regardé de près mais au moins un IF devra être placé quelque-part...

C'est, entre autre, à ça que pourra servir l'onglet "divers". Il servira déjà pour les graphiques afin de tracer la courbe théorique.


mapomme, ouais.
Ce serait dommage d'arriver comme un con aux portes du paradis ^^
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 230
Messages
2 096 413
Membres
106 607
dernier inscrit
gaetanazertyuiop