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

Résolu
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 ! :)

2 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
    1. summer
       
      J'essaye de suite..mais ca vient de faire planter mon fichier ^^
      0
    2. ThauTheme Messages postés 1564 Statut Membre 160
       
      Désolé je me suis planté. J'ai corrigé le code.
      0
    3. summer
       
      Merci, mais ca ne fonctionne pas car une fois le code rentrer mon fichier en répond plus...
      0
    4. ThauTheme Messages postés 1564 Statut Membre 160
       
      Ben... Envoie le fichier !
      0
    5. summer > ThauTheme Messages postés 1564 Statut Membre
       
      Je ne peux pas certaines données sont confidentielles
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. summer
       
      Tout simplement parfait !!! Merci beaucoup :)

      Est ce que ca te dérangerai de m'expliquer un peu comment tu as fait? :D
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > summer
         
        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
    2. summer
       
      Merci je vais étudier ca :)
      0