Tableau VBA : Connaître valeur max Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 22 mai 2019, 12:33

Bonjour à tous,

J'ai réalisé ce matin un code qui enregistre une série de nom dans un tableau créé dans VBA puis, va chercher ces noms dans une base de données et enregistre le numéro situé 1 colonnes après.

Pour être un peu plus claire :

J'ai, imaginons, cette liste dans ma 1ère BDD :

Fleur
Patate
Curry

Puis, dans une seconde base de données :

Fleur : 40
Eau : 60
Patate : 70
Post-it : 90
Curry : 80

Sous VBA, j'ai créé un tableau à deux dimensions qui récupère les éléments de la 1ère BDD et va chercher les numéros associés.

Donc sous VBA j'ai :
Dim tabfourniture(2,1) as String

Et je me retrouve bien avec mon tableau "virtuel" suivant
Tabfourniture (0,0) = fleur
Tabfourniture (1,0)=Patate
Tabfourniture(2,0)=Curry
Tabfourniture(0,1)=40
Tabfourniture(1,1)=70
Tabfourniture(2,1)=80

Jusqu'ici, tout va bien.

Maintenant, j'aimerais que excel m'inscrive dans une cellule la valeur maximale de la deuxième colonne de mon tableau et ça, je ne sais pas comment faire.

En gros je voudrais un truc comme ceci :

A1 = Curry
B1 = 80
A2 = Patate
B2 = 70
A3 = Fleur
B3 = 40

J'espère être assez claire... Merci d'avance pour votre aide !
Bonne journée !
A
AlgoPlus
Membre dévoué
Membre dévoué
Messages : 566
Appréciations reçues : 46
Inscrit le : 27 février 2019
Version d'Excel : 2003

Message par AlgoPlus » 22 mai 2019, 15:42

Bonjour,

Si le résultat souhaité est d'avoir les données dans l'ordre décroissant du nombre associé:
 Quick Tabfourniture, LBound(Tabfourniture), UBound(Tabfourniture), 1, False
 Range("E1").Resize(UBound(Tabfourniture, 1) + 1, UBound(Tabfourniture, 2) + 1) = Tabfourniture
et la sub de tri:
Sub Quick(a(), gauc, droi, col, ordre) ' Quick sort
'http://boisgontierjacques.free.fr/pages_site/tableaux.htm
  ref = a((gauc + droi) \ 2, col)
  g = gauc: d = droi
  Do
    If ordre Then
      Do While a(g, col) < ref: g = g + 1: Loop
      Do While ref < a(d, col): d = d - 1: Loop
    Else
      Do While a(g, col) > ref: g = g + 1: Loop
      Do While ref > a(d, col): d = d - 1: Loop
    End If
    If g <= d Then
      For i = LBound(a, 2) To UBound(a, 2)
        temp = a(g, i): a(g, i) = a(d, i): a(d, i) = temp
      Next i
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call Quick(a, g, droi, col, ordre)
  If gauc < d Then Call Quick(a, gauc, d, col, ordre)
End Sub
A+
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 22 mai 2019, 19:51

Top c'est parfait ! J'ai plus qu'à l'adapter pour un tableau à 3 dimensions !

Merci beaucoup !
A
AlgoPlus
Membre dévoué
Membre dévoué
Messages : 566
Appréciations reçues : 46
Inscrit le : 27 février 2019
Version d'Excel : 2003

Message par AlgoPlus » 24 mai 2019, 12:02

à 3 dimensions ? ou à 3 colonnes ? (deux dimensions)
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 24 mai 2019, 15:16

3 colonnes, au temps pour moi :)
Je n'ai rien eu à changer en fait, tout était ok !

Merci encore pour ton aide, il va bien me servir ce bout de code ;)

A+ !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message