XL 2016 Maximum d'une colonne mais une cellule peut avoir plusieurs valeur

Andry

XLDnaute Junior
Bonjour à tous,
J'ai besoin de votre aide pour trouver le maximum dans une colonne!
Jusqu'à là vous allez me dire il suffit de faire max()
Sauf que dans une cellule, il peut y avoir plusieurs valeur à la ligne.
Par exemple dans A1 = 200 251 300
dans A2 =152; A3 =128 ; A4 = 99 500 502......
dans cet exemple le résultat doit être la cellule A4.

Merci d'avance
 
Solution
Re,

La fonction Maxi : Utilisation.
  • Sur une feuille Excel : =Maxi(A1:B25)
  • En VBA : Resultat = Maxi(Range("A1:B25"))

Tout le code est dans module1 :
VB:
Function Maxi(plage As Range)
Dim t, m, s, i&, j&, x
   If plage.Count = 1 Then
      ReDim t(1 To 1, 1 To 1)
      t(1, 1) = plage.Value
   Else
      t = plage.Value
   End If
   m = -1E-99
   For i = 1 To UBound(t)
      For j = 1 To UBound(t, 2)
         s = Split(t(i, j))
         For Each x In s
            If IsNumeric(x) Then If CDbl(x) > m Then m = CDbl(x)
         Next x
      Next j
   Next i
   If m = -1E-99 Then Maxi = "" Else Maxi = m
End Function

Sub Test()
Dim resultat
   resultat = Maxi(Range("A1:B25"))
   MsgBox "Maxi de...

jmfmarques

XLDnaute Accro
Bonjour
Tu peux toujours déterminer la valeur max de celles multiples dans une cellule et te lancer dans des comparaisons en boucle *******, t'éloignant ainsi très significativement tant de l'utilisation de formules Excel que de l'esprit même (une cellule = une seule donnée)
****** ou encore "tricoter" à l'aide de colonnes supplémentaires !

J'ignore si un autre t'encouragera dans la voie d'une telle usine à gaz, mais ce ne sera pas moi.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Voir cette fonction personnalisée en VBA :
VB:
Function Maxi(plage As Range)
Dim t, m, s, i&, j&, x
  
   If plage.Count = 1 Then
      ReDim t(1 To 1, 1 To 1)
      t(1, 1) = plage.Value
   Else
      t = plage.Value
   End If
   m = -1E-99
   For i = 1 To UBound(t)
      For j = 1 To UBound(t, 2)
         s = Split(t(i, j))
         For Each x In s
            If IsNumeric(x) Then If CDbl(x) > m Then m = CDbl(x)
         Next x
      Next j
   Next i
   If m = -1E-99 Then Maxi = "" Else Maxi = m
End Function
 

Fabinou62

XLDnaute Occasionnel
Bonjour, un truc bcp + simple et rapide,
- tu fais convertir tes données dans Données > Convertir, tu indiques le séparateur comme étant le espace.
- tu fais le max par ligne puis un max par colonne sur ces valeurs. ;)
Tu peux même faire une macro qui enregistre ce que tu fais et c'est bon
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

La fonction Maxi : Utilisation.
  • Sur une feuille Excel : =Maxi(A1:B25)
  • En VBA : Resultat = Maxi(Range("A1:B25"))

Tout le code est dans module1 :
VB:
Function Maxi(plage As Range)
Dim t, m, s, i&, j&, x
   If plage.Count = 1 Then
      ReDim t(1 To 1, 1 To 1)
      t(1, 1) = plage.Value
   Else
      t = plage.Value
   End If
   m = -1E-99
   For i = 1 To UBound(t)
      For j = 1 To UBound(t, 2)
         s = Split(t(i, j))
         For Each x In s
            If IsNumeric(x) Then If CDbl(x) > m Then m = CDbl(x)
         Next x
      Next j
   Next i
   If m = -1E-99 Then Maxi = "" Else Maxi = m
End Function

Sub Test()
Dim resultat
   resultat = Maxi(Range("A1:B25"))
   MsgBox "Maxi de la plage A1:B25 = " & resultat, vbInformation
End Sub
 

Pièces jointes

  • Andry- max plage multi valeurs- v1.xlsm
    19.6 KB · Affichages: 12
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400