XL 2021 Index tableau ?

  • Initiateur de la discussion Initiateur de la discussion Lu K
  • 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 !

Lu K

XLDnaute Occasionnel
Bonjour à tous et à toutes,

Cela faisait très longtemps que je n'avais pas posé de question sur le forum. N'ayant pas réussi à trouver ma solution, je me permets de faire appel à vous.
Dans un tableau, via le vba, je cherche le moyen de trouver l'index correspondant à mon résultat
Pour mieux comprendre, ci dessous mon code :
VB:
    Dim Tableau()

    ReDim Tableau(1 To 10)
    
    For i = 1 To 10
        Tableau(i) = i
    Next i
    
    'C'est ici que je cherche l'index du résultat (pour info, plus tard les valeurs seront aléatoires et non de 1 à 10)'
    resultat = Application.WorksheetFunction.Max(Tableau)
    MsgBox resultat

Merci d'avance pour vos réponses.
 
Bonjour Lu K

Il faut ajouter une boucle
VB:
Sub Test()
  Dim i As Integer, IndexMax As Integer, Resultat As Integer
  Dim Tableau(10)
  For i = 1 To 10
      Tableau(i) = i
  Next i
  ' Trouver la valeur maximale'
  Resultat = Application.WorksheetFunction.Max(Tableau)
  ' Trouver l'index de cette valeur'
  For i = 1 To UBound(Tableau)
    If Tableau(i) = Resultat Then
      IndexMax = i
      Exit For ' Sortir de la boucle dès qu'on trouve le premier max'
    End If
  Next i
  ' Affichage du résultat'
  MsgBox "Valeur max: " & Resultat & vbCrLf & "Index: " & IndexMax
End Sub

A+
 
Bonsoir Lu K, wDog,
On doit pouvoir trouver l'index avec un Match :
Code:
Sub Test()
  Dim i%, IndexMax%, Resultat%, Tableau
  Calculate
  Tableau = [A1:A40] ' Valeur aléatoire dans un array
  ' Trouver la valeur maximale'
  Resultat = Application.WorksheetFunction.Max(Tableau)
  ' Trouver l'index de cette valeur'
  IndexMax = Application.Match(Resultat, Tableau, 0)
  ' Affichage du résultat'
  MsgBox "Valeur max: " & Resultat & vbCrLf & "Index: " & IndexMax
End Sub
 

Pièces jointes

Salut Sylvanu
Bonsoir Lu K, wDog,
On doit pouvoir trouver l'index avec un Match :
Code:
Sub Test()
  Dim i%, IndexMax%, Resultat%, Tableau
  Calculate
  Tableau = [A1:A40] ' Valeur aléatoire dans un array
  ' Trouver la valeur maximale'
  Resultat = Application.WorksheetFunction.Max(Tableau)
  ' Trouver l'index de cette valeur'
  IndexMax = Application.Match(Resultat, Tableau, 0)
  ' Affichage du résultat'
  MsgBox "Valeur max: " & Resultat & vbCrLf & "Index: " & IndexMax
End Sub
Là, il s'agit d'un petit tableau !
On m'a toujours dit qu'une boucle est plus rapide qu'un instruction de recherche... est-ce vrai ?

A+
 
Bonsoir wDog,
Exact, mais sur 10000 valeurs, sur mon vieux PC avec XL2007, ça ne met que 2 à 3 ms de plus.
Donc c'est un choix entre un code plus concis et quelques ms.
( perso je préfère toujours un code le plus lisible et le plus court possible, d'où ma proposition )
 

Pièces jointes

- 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

Discussions similaires

Réponses
40
Affichages
2 K
Réponses
3
Affichages
859
Réponses
5
Affichages
474
Retour