Retour a la ligne pour chaque message dans une MsgBox sur Excel

Résolu/Fermé
summer - 23 mai 2016 à 15:13
 summer - 24 mai 2016 à 12:06
Bonjour,

Je me permet de venir ici, car j'ai regarder plusieurs forum et je n'arrive pas à trouver la solution a mon problème....

Je débute tout juste en VBA et j'ai commencer une macro qui me met une message box dès qu'il y a un évènement dans les 30 prochain jours.

Tout fonctionne bien, le truc c'est qu'il peut y avoir plusieurs évènement dans les 30 prochain jour et donc il m'affiche plusieurs message box à suivre, je préfèrerais que tout soit sur la même car je trouve ca plus lisible.

Je serais amener a rajouter des évènement au fur et a mesure, je ne peux donc pas prévoir combien il me faudra de ligne, il faudrait que ca s'inscrive dans une boucle. Mais je n'arrive pas a la faire ...

J'espère etre assez clair ^^'

Pour résumer j'aimerais avoir qu'une message box qui regroupe plusieurs info.

Voici mon VBA

Private Sub Workbook_Open()
'Pour chaque date de la colonne Date d'effet
For Each cellule In Range("G:G")

'Si une date est inférieur ou égale à aujourd'hui +30 jours alors affiche le texte de la cellule correspondante en colonne A
If cellule <= Date + 30 And cellule <> "" And cellule >= Date Then
MsgBox (cellule.Offset(0, -1).Value & " " & cellule.Offset(0, -5).Value & " au " & cellule.Offset(0, -3).Value), vbInformation = vbOKOnly, " Changement dans les 30 prochains jours"

Next

End Sub


Merci pour votre attention,
aidez moi please ! :)

A voir également:

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié par ThauTheme le 23/05/2016 à 16:14
Bonjour Summer, bonjour le forum,

peut-être comme ça :

Private Sub Workbook_Open()
Dim MSG As String

''Pour chaque date de la colonne Date d'effet
For Each cellule In Range("G:G")
If cellule <= Date + 30 And cellule <> "" And cellule >= Date Then
'Si une date est inférieur ou égale à aujourd'hui +30 jours alors affiche le texte de la cellule correspondante en colonne A
        MSG = IIf(MSG = "", _
        cellule.Offset(0, -1).Value & " " & cellule.Offset(0, -5).Value & " au " & cellule.Offset(0, -3).Value & " Changement dans les 30 prochains jours" & Chr(10), _
        MSG & cellule.Offset(0, -1).Value & " " & cellule.Offset(0, -5).Value & " au " & cellule.Offset(0, -3).Value & " Changement dans les 30 prochains jours" & Chr(10))
End If
Next
MsgBox MSG, vbOKOnly
End Sub


À plus,
ThauTheme
0
J'essaye de suite..mais ca vient de faire planter mon fichier ^^
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
23 mai 2016 à 16:15
Désolé je me suis planté. J'ai corrigé le code.
0
Merci, mais ca ne fonctionne pas car une fois le code rentrer mon fichier en répond plus...
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
23 mai 2016 à 16:19
Ben... Envoie le fichier !
0
summer > ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022
23 mai 2016 à 16:21
Je ne peux pas certaines données sont confidentielles
0
f894009 Messages postés 17241 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 février 2025 1 713
24 mai 2016 à 09:35
Bonjour a vous deux

Legeres modifs au code de Thauttheme:

Private Sub Workbook_Open()
    Dim MSG As String, Plage As Range, cellule As Range

    ''Pour chaque date de la colonne Date d'effet
    With Worksheets("feuil1")       'adapter nom de feuille
        derlig = .Range("G" & Rows.Count).End(xlUp).Row
        Set Plage = Range("G1:G" & derlig)
    End With
    For Each cellule In Plage
        If cellule <> "" And cellule >= Date And cellule <= Date + 30 Then
            'Si une date est inférieur ou égale à aujourd'hui +30 jours alors affiche le texte de la cellule correspondante en colonne A
            MSG = IIf(MSG = "", cellule.Offset(0, -1).Value & " " & cellule.Offset(0, -5).Value & " au " & cellule.Offset(0, -3).Value & Chr(10), _
                    MSG & cellule.Offset(0, -1).Value & " " & cellule.Offset(0, -5).Value & " au " & cellule.Offset(0, -3).Value & Chr(10))
        End If
    Next cellule
    MsgBox MSG, vbOKOnly, " Changement dans les 30 prochains jours"
End Sub
0
Tout simplement parfait !!! Merci beaucoup :)

Est ce que ca te dérangerai de m'expliquer un peu comment tu as fait? :D
0
f894009 Messages postés 17241 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 février 2025 1 713 > summer
Modifié par f894009 le 24/05/2016 à 11:48
Re,

Ben, je serai tente de vous dire de regarder les differences entre les deux codes, mais bon ....

    
    'mise en memoire des cellules non vides colonne G pour temps d'execution plus court
    With Worksheets("feuil1")       'adapter nom de feuille
        derlig = .Range("G" & Rows.Count).End(xlUp).Row  'derniere cellule non vide
        Set Plage = Range("G1:G" & derlig)   'mise en memoire des cellules non vide
    End With
    For Each cellule In Plage    'boucle sur la place de cellule en memoire
   'MSG: vos infos cellules, bouton, titre de la boite
   MsgBox MSG, vbOKOnly, " Changement dans les 30 prochains jours"
0
Merci je vais étudier ca :)
0