Msg box d'une cellule en fonction du résultat d'une VBA

Bonjour,

je souhaite faire apparaitre dans un message box le contenu d'une cellule nommée X (dans la colonne L). Cette cellule X correspond à un nom qui est associée à une date (dans la colonne V). J'ai créé une macro qui peut déterminer la date la plus tard au sein de la colonne V. Ainsi je souhaite qu'il apparaisse un message box afin que le nom (dans la colonne L) associée à la date au plus tard sélectionnée par ma macro, apparaisse en Msg Box. Voici le début de mon code:

 Sub Max()
 Dim Myrange As Range, Response As Date, Myrange1 As Range, Response1 As String

 With Sheets("402K200-3")
 Set Myrange = Worksheets("402K200-3").Range("V6:V5000")
 Set Myrange1 = Worksheets("402K200-3").Range("L6:L5000")
 Response = Application.WorksheetFunction.Max(Myrange)
 Response1=Application.WorksheetFunction................
 MsgBox "La date la plus tard est le " & Response
 End With

 End Sub

Ce serait nettement plus facile pour comprendre!

Tâche aussi d'être complet dans tes explications et demandes!

A+

Bonjour,

Si tu indentais ton code, il serait mieux écrit et plus lisible !

 Sub Max()
     Dim Myrange As Range, Response As Date, Myrange1 As Range, Response1 As String
     With Worksheets("402K200-3")
         Set Myrange = [barrer]Worksheets("402K200-3")[/barrer].Range("V6:V5000")

 End Sub

Et si tu mets la feuille en With, ce n'est pas pour la répéter ensuite à chaque fois : avec With tu demandes à VBA de la mettre en mémoire, toutes les expressions débutant par un point vont automatiquement référer à cette feuille, ce qui fait gagner du temps à VBA, et à toi moins de code à écrire...

Pour WorksheetFunction, tu peux te dispenser de le précéder par Application, Application est implicite dans de nombreux cas, pas toujours mais c'est le cas ici. D'ailleurs Application.Max fonctionnera aussi bien que WorksheetFunction.Max mais ce dernier est préférable car là l'assistant t'affiche la liste des fonctions ce qui t'évite souvent d'avoir à la taper en entier, gain de temps....

Cordialement.

Bonjour,

Vous trouverez le fichier en PJ. Ce que je souhaite mettre en place c'est de corréler la date au plus tard (qui est déterminée par une macro existante) à un nom associée (en colonne C).

Ex: En cliquant sur le bouton macro, la date au plus tard correspond à la cellule G9; je souhaite qu'une message box apparaisse mentionnant à quel nom cette date correspond (cellule C9).

Je souhaite également que le nom soit mis en surbrillance.

Merci de votre aide et merci de vos conseils.

Cordialement

Paul

6classeur1.xlsm (17.63 Ko)

Bonjour,

Quelqu'un pour ma requête svp ?

Merci

Cordialement

Bonsoir,

Sub ChercheMax()
    Dim d As Object, k, m, n%, i%, msg$
    Set d = CreateObject("Scripting.Dictionary")
    With ActiveSheet
        n = .Cells(.Rows.Count, 7).End(xlUp).Row
        For i = 6 To n
            k = .Cells(i, 7).Value2
            If d.exists(k) Then
                d(k) = d(k) & ";" & .Cells(i, 3).Value
            Else
                d(k) = ";" & .Cells(i, 3).Value
            End If
        Next i
    End With
    k = WorksheetFunction.Max(d.keys)
    m = Split(d(k), ";")
    msg = "A la date du " & Format(k, "dd/mm/yyyy") & ", la plus avancée :"
    For i = 1 To UBound(m)
        msg = msg & Chr(10) & m(i)
    Next i
    MsgBox msg
End Sub

Bonsoir MFerrand,

Je l'ai adapté à mon fichier et tout fonctionne à merveille. Je te remercie pour ca.

j'ai une dernière requête avant de clôturer ce sujet.

Je souhaite comparer la date rentrée dans la colonne G par rapport à la date "d'aujourd'hui". Ainsi, si date de G7 est dans moins de 10 jours alors message box : "Attention livraison imminente". Et j'aimerais que cette macro s'applique à toutes les cellules de la colonne G jusqu' à la derniere Ligne

Ce n'est pas compliqué en soit d'après moi, mais je n'arrive pas à définir correctement mes paramètres initiaux

Merci de votre aide.

Cordialement

Paul

A la place du précédent ?

Sans autre identification ?

Pas très clair !

Non non pas à la place. En complément: avec un second bouton macro --> En cliquant dessus j'ai une liste des prénoms (dans notre exemple) dont la date respective se passe dans moins de D-10 Jours.

Exemple:

Paul 23/12/2016

'En cliquant sur le bouton Macro, je vais voir apparaitre le prénom "Paul" car la date associée est inf à D-10 (23 Decembre - 15 Decembre = 8 jours dans notre exemple).

Cordialement

Quel est le message alors !

Le message serait: "Attention, ces prénoms doivent être livrés dans moins de 10 jours: 'Liste des prénoms dont la date est inférieure à Date aujourd'hui - 10 jours. "

Revue en ce sens :

Sub ChercheMax()
    Dim d As Object, k, m, n%, i%, msg$, msgprox$
    Set d = CreateObject("Scripting.Dictionary")
    With ActiveSheet
        n = .Cells(.Rows.Count, 7).End(xlUp).Row
        For i = 5 To n
            k = .Cells(i, 7).Value2
            If d.exists(k) Then
                d(k) = d(k) & ";" & .Cells(i, 3).Value
            Else
                d(k) = ";" & .Cells(i, 3).Value
            End If
            If k >= Date And k - Date < 10 Then msgprox = Chr(10) & .Cells(i, 3)
        Next i
    End With
    k = WorksheetFunction.Max(d.keys)
    m = Split(d(k), ";")
    msg = "A la date du " & Format(k, "dd/mm/yyyy") & ", la plus avancée :"
    For i = 1 To UBound(m)
        msg = msg & Chr(10) & m(i)
    Next i
    If msgprox <> "" Then msgprox = "Attention ! Livraison dans moins de 10 jours de :" & msgprox
    MsgBox msg
    If msgprox <> "" Then MsgBox msgprox
End Sub
Rechercher des sujets similaires à "msg box fonction resultat vba"