Retour a la ligne pour chaque message dans une MsgBox sur Excel
Résolu
summer
-
summer -
summer -
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 ! :)
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 ! :)
2 réponses
-
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 -
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-
Tout simplement parfait !!! Merci beaucoup :)
Est ce que ca te dérangerai de m'expliquer un peu comment tu as fait? :D- 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"
-
-