VBA : Trouver les cellules dont la valeur = x

polo_0109

XLDnaute Nouveau
Bonjour,

Je cherche la solution en vain depuis des heures.


Je vais essayer d'être clair :
Chaque cellule de la ligne 2 contient la valeur 1, 2 ou 3 sans les connaitre à l'avance. Elles sont disposées en série, cad que la ligne 2 donne quelque chose du genre : 22221113333333 (chaque série ne sort qu'une seule fois).
Sur la ligne 1 se trouve des nombres compris entre -50 et 50.
Je voudrai au final connaitre la différence entre la valeur max et la valeur min de la ligne 1 pour chacune des 3 séries.


Exemple :
Ligne 1 : 6 2 8 7 9 etc...
Ligne 2 : 2 2 2 2 1 1 1 3 3 3 3 3 3 3
---> La différence entre la valeur max et la valeur min de la série 2 est de 6 (8-2).



Je serai vraiment reconnaissant envers celui ou ceux qui m'aideront.
Merci d'avance

Edit : en fait je sais le faire en utilisant select mais dans mon cas je crois que ça ne convient pas car en réalité, mon but à terme était d'écrire ceci :
"Si la différence entre la valeur max et la valeur min de la série est supérieur à 5, alors..."
Je ne veux pas forcément la formule, juste connaitre le principe.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : VBA : Trouver les cellules dont la valeur = x

Bonjour polo_0109
Sans support, pas facile de voir exactement ce qu'il faut faire.

Un essai de fonction personnalisée :
Code:
[COLOR="DarkSlateGray"][B]Function toto(n, r As Range)
Application.Volatile
Dim i&, mi, ma, tf As Boolean
   toto = ""
   mi = 9 ^ 9
   ma = -mi
   For i = 1 To r.Columns.Count
      If r.Rows(2).Cells(1, i).Value = n Then
         tf = True
         ma = WorksheetFunction.Max(ma, r.Rows(1).Cells(1, i).Value)
         mi = WorksheetFunction.Min(mi, r.Rows(1).Cells(1, i).Value)
      End If
   Next i
   If tf Then toto = ma - mi
End Function[/B][/COLOR]
Si les données sont, par exemple, en G1:U2,=toto(2;$G$1:$U$2) renvoie la différence entre le maximum et le minimum de la "série 2".​
ROGER2327
#3466


24 Floréal An CCXVIII
2010-W19-4T01:40:55Z
 

Pièces jointes

  • MAX-MIN_3466.xls
    25 KB · Affichages: 71

polo_0109

XLDnaute Nouveau
Re : VBA : Trouver les cellules dont la valeur = x

Bonjour ROGER2327,

La formule =SI(NB.SI($G$2:$U$2;A4);MAX(($G$2:$U$2=$A4)*(9^9+$G$1:$U$1))-9^9;"") me convient parfaitement. Merci beaucoup pour le temps que tu y as passé ! Ça m'enlève une grosse épine du pied.


Dernière question :
A quoi correspondent les "9^9" ? Je dois avouer que je n'en ai aucune idée...
 

ROGER2327

XLDnaute Barbatruc
Re : VBA : Trouver les cellules dont la valeur = x

Re...
9 ^ 9 = 387420489. Mais sa valeur exacte n'a pas d'importance : vous pouvez remplacer 9 ^ 9 par un autre nombre, pourvu qu'il soit plus grand que tous les nombres que vous utilisez dans votre tableau.

Dans la fonction personnalisée, les lignes
Code:
[COLOR="DarkSlateGray"][B]   mi = 9 ^ 9
   ma = -mi[/B][/COLOR]
peuvent être remplacées par
Code:
[COLOR="DarkSlateGray"][B]   mi = WorksheetFunction.Max(r)
   ma = WorksheetFunction.Min(r)[/B][/COLOR]
ROGER2327
#3470


25 Floréal An CCXVIII
2010-W19-5T00:41:22Z
 

Discussions similaires

Réponses
0
Affichages
176