Afficher la valeur max dans une fenetre Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
mindah
Jeune membre
Jeune membre
Messages : 41
Inscrit le : 28 avril 2016
Version d'Excel : 2013

Message par mindah » 2 mai 2016, 10:18

Bonjour,
voila je voudrais afficher la valeur max avec sa date et son unité dans une seule fenetre en utilisant "msgbox"
et sa devrait donner par exemple au final :

Le 10/02/2016, la valeur: 12000 $

j'ai pu affichier la valeur et son unité mais le probleme se pose pour affichier la date j'y arrive pas.
Help !! :!:
voir le fichier que j'essaie de voir en piece jointe.

Merciiii bcp !
test.xlsm
(34.42 Kio) Téléchargé 19 fois
v
vba-new
Passionné d'Excel
Passionné d'Excel
Messages : 3'003
Appréciations reçues : 2
Inscrit le : 13 mai 2009
Version d'Excel : 2010 FR - 2013 FR

Message par vba-new » 2 mai 2016, 10:24

Salut mindah,

Sans regarder ton fichier, essaie quelque chose comme ça :
MsgBox "Le " & Format( Date, "dd/mm/yyyy") & ", la valeur : " & taValeur
vba-new
m
mindah
Jeune membre
Jeune membre
Messages : 41
Inscrit le : 28 avril 2016
Version d'Excel : 2013

Message par mindah » 2 mai 2016, 10:28

je viens d'essayer mais sa n'affiche pas la date qui correspond a la valeur max de la colonne.
voici mon code :

Sub Selection_max()
Sheets("test").Select
Dim valeur As String
valeur = Range("B369")

Sheets("Feuil2").Select
MsgBox "Le " & Format(Date, "dd/mm/yyyy") & ", la valeur : " & valeur
End Sub
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'342
Appréciations reçues : 115
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 2 mai 2016, 11:06

Bonjour le fil, bonjour le forum,

En regardant ton fichier, essaie ce code. Il prend en compte l'éventualité d'avoir la valeur Max à plusieurs dates différentes (je ne sais pas si ce cas de figure est possible dans ton tableau mais au cas où...) :
Sub Selection_max()
Dim T As Worksheet 'déclare la variable T (onglet Test)
Dim PL As Range 'déclare la variable PL (PLage)
Dim V As Integer 'déclare la variable V (Valeur)
Dim R As Range 'déclare la variable R (Recherche)
Dim MSG1 As String 'déclare la variable MGS1 (MeSsaGe 1)
Dim MSG2 As String 'déclare la variable MGS2 (MeSsaGe 2)

Set T = Sheets("test") 'définit l'onglet T
V = T.Range("B369") 'définit la valeur V
Set PL = T.Range("B3:B368") 'définit la palge PL
Select Case Application.WorksheetFunction.CountIf(PL, V) 'agit en fonction du nombre de fois que la valeur max apparaît dans la plage PL
    Case 1 'cas : une seule fois
        MsgBox "Le " & T.Cells(PL.Find(V, , xlValues, xlWhole).Row, 1).Value & ", la valeur : " & V & " $" 'message
    Case Else 'cas : plus d'une seule fois
        MSG1 = "La valeur " & V & " $ les :" & Chr(13) 'définit le message MSG1
        Set R = PL.Find(V, , xlValues, xlWhole) 'définit la recherche R
        PA = R.Address 'définit l'addresse de la première occurrence trouvée
        Do 'exécute
            MSG2 = IIf(MSG2 = "", T.Cells(R.Row, 1).Value & Chr(13), MSG2 & T.Cells(R.Row, 1).Value & Chr(13)) 'définit le message MSG2
            Set R = PL.FindNext(R) 'redéfinit la recherche R (occurrence suiivante)
        Loop While Not R Is Nothing And R.Address <> PA 'boucle tant qu'il existe de nouvelle occurrence ailleurs qu'en PA
        MsgBox MSG1 & MSG2 'affiche le message MSG1 et MSG2
End Select 'fin de l'action en fonction du nombre de fois que la valeur max apparaît dans la plage PL
End Sub
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
v
vba-new
Passionné d'Excel
Passionné d'Excel
Messages : 3'003
Appréciations reçues : 2
Inscrit le : 13 mai 2009
Version d'Excel : 2010 FR - 2013 FR

Message par vba-new » 2 mai 2016, 11:28

Ah oui, je n'ai pas regardé le fichier, donc mon code ne risquait pas de marcher ! :lol:

Je propose une autre alternative, en utilisant la méthode du Dictionary.
L'utilisation d'un dictionnaire pour accéder aux éléments par une clé est très rapide :
Sub Selection_max_Dico()
    Dim tblValeurs
    Dim monDicoDate As Object
    Dim valMax As Double

    'on stocke les données dans une variable tableau
    tblValeurs = Sheets("test").Range("A3:B368").Value
    
    'on va créer un dictionnaire des valeurs avec les dates associées
    Set monDicoDate = CreateObject("scripting.dictionary")
    For i = 1 To UBound(tblValeurs)
        monDicoDate(tblValeurs(i, 2)) = monDicoDate(tblValeurs(i, 2)) & tblValeurs(i, 1) & vbCrLf
    Next i

    'on récupère la valeur max
    valMax = Application.Max(monDicoDate.keys)

    MsgBox "La valeur " & valMax & " $ les :" & Chr(13) & monDicoDate(valMax)

    'on vide la mémoire
    Set monDicoDate = Nothing
End Sub
Modifié en dernier par vba-new le 5 mai 2016, 14:10, modifié 1 fois.
vba-new
m
mindah
Jeune membre
Jeune membre
Messages : 41
Inscrit le : 28 avril 2016
Version d'Excel : 2013

Message par mindah » 2 mai 2016, 11:31

Magnifique sa marche, merci beaucoup!
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'342
Appréciations reçues : 115
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 2 mai 2016, 12:02

Re,

Bien vu VBA-New !...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
m
mindah
Jeune membre
Jeune membre
Messages : 41
Inscrit le : 28 avril 2016
Version d'Excel : 2013

Message par mindah » 3 mai 2016, 09:21

Merci VBA_New.
Effectivement c'est beaucoup plus simple, mais quand le message box la date correspondante ne s'affiche pas.
y'a t-il un rajout que je peux faire pour afficher la date correspondante ?
v
vba-new
Passionné d'Excel
Passionné d'Excel
Messages : 3'003
Appréciations reçues : 2
Inscrit le : 13 mai 2009
Version d'Excel : 2010 FR - 2013 FR

Message par vba-new » 3 mai 2016, 12:44

mindah a écrit :mais quand le message box la date correspondante ne s'affiche pas
Désolé je n'ai pas compris :roll:
Que veux-tu dire ?
vba-new
m
mindah
Jeune membre
Jeune membre
Messages : 41
Inscrit le : 28 avril 2016
Version d'Excel : 2013

Message par mindah » 3 mai 2016, 13:58

la valeur max correspond a une date, et avec ton code quand je l'excute il me donne juste la valeur.
ce que je veux afficher est la valeur ainsi que sa date.
je ne sais pas si je me suis bien expliqué désolé :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message