Tu m'excuseras mais je venais de te fournir la signification de dossier dès lors que tu t'installes devant un ordinateur sous Windows... et tu me parles de dossier Excel !
Il n'y a jamais eu de composant Excel appelé dossier. Si tu parles de fichier, tu peux dire fichier ou classeur...
Comme on ne sait si tu as un classeur prévu à cet effet ou non, qu'il faudrait ou non ouvrir... on va opter pour en créer un par exportation d'une feuille où l'on aura placé les messages dans un nouveau classeur. On commence donc par créer cette feuille qu'on pourra exporter par la suite :
Dim wsMsg As Worksheet
'...
Set wsMsg = Worksheets.Add(before:=Worksheets(1))
Mais si on fait ainsi, avec ton code non qualifié, ça va faire tilt !
Mais on ne sait sur quelle feuille tu opères, sinon qu'elle est censée être active pendant que tu opères , on va donc en tenir compte :
Dim wsA As Worksheet, wsMsg As Worksheet, m%, Msg$
Set wsA = ActiveSheet
Set wsMsg = Worksheets.Add(before:=Worksheets(1))
'... ?
With wsA
'ton code ?
'For i = ? To ?
If LCase(.Cells(i, 31).Value) = "@" Then
m = m + 1: wsMsg.Cells(1, 1) = .Cells(i, 28)
Msg = Msg & Chr(10) & .Cells(i, 28)
End If
Next i
End With
Msg = "Résumé :" & Msg
MsgBox Msg, vbExclamation
'... ?
wsMsg.Move
'Le nouveau classeur devient le classeur actif, on aura donc les messages en vue
'Eventuellement, enregistrer le classeur actif :
'ActiveWorkbook.SaveAs "chemin" & "NomClasseur"
ThisWorkbook.Close False ' ou True ? pour fermer le classeur de travail
On récupère donc préalablement ta feuille active dans une variable, on crée la nouvelle feuille, on déroule ta procédure dont on ne connait pas grand chose sauf un bout de boucle, on met ta feuille ex-active sous bloc With, ce qui permettra de qualifier tes expressions, en ajoutant un point devant Cells...
A la fin on l'exporte, puis tout dépend de tes choix... !
Cordialement.