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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…