Msgbox qui recapitule toutes les msgbox précédentes Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
f
favadusy57
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 16 avril 2014
Version d'Excel : 2016

Message par favadusy57 » 27 mai 2014, 14:54

Bonjour à tous,

voici mon GROS problème, j'ai une très longue macro qui s’exécute en boucle et qui m'affiche certains msgbox en fonction du type de fichier traité.
par exemple si le fichier n'est pas compatible : msgbox "fichier xxxx non compatible"
si le fichier n'existe pas : msgbox "fichier xxxx manquant"
le dernier msgbox est: traitement terminé

Problème: ayant des tonnes de fichiers à traiter, j'envisage lancer ma macro le soir et récupérer le résultat le matin, du coup si je garde mes msgbox actuels, il faudra à chaque fois cliquer sur ok et la macro s’arrêtera au premier msgbox.

Mon idée est que quand je lance ma macro le soir avant de partir qu'elle enregistre chaque msgbox qu'elle aurait du afficher (sans s’arrêter) et qu'à la fin du traitement des fichiers, quand je reviens le matin qu'elle me ressorte tout les msgbox que j'aurais du voir si j'étais là.

Quelqu'un peut il m'aider là dessus ?
Merci d'avance.
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'473
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 27 mai 2014, 15:03

Bonjour,

je te propose une macro qui permet de rassembler le résulat de toutes tes msgboxs dans une feuille excel, que j'ai appelée msgbox

IL faudra que tu remplaces dans tes codes toutes les instructions msgbox par msgboxs (ctrl-H)



Sub msgboxs(s)
On Error Resume Next
Set ws = Worksheets("msgbox")
If Err <> 0 Then
Set ws = Worksheets.Add
ws.Name = "msgbox"
End If
ws.Cells(ws.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = s
Set ws = Nothing
End Sub
Avatar du membre
Nad
Passionné d'Excel
Passionné d'Excel
Messages : 4'813
Appréciation reçue : 1
Inscrit le : 16 mars 2008
Version d'Excel : 2003 FR - 2007 FR

Message par Nad » 27 mai 2014, 15:15

Bonjour

Une autre méthode est de remplacer les Msgbox par des Msg qui seront rassemblés à la fin du code
Sub TaMacro()
1er test
Msg = "fichier xxxx non compatible" & vbCr 
2ème test
Msg = Msg & "fichier xxxx manquant" & vbCr 
Xème test
Msg = Msg & " Xème réponse" & vbCr 

If Len(Msg) > 0 Then
    MsgBox vbCr & Msg & vbCr, vbInformation + vbOKOnly, " traitement terminé"
    Exit Sub
End If
End Sub
Amicalement
Nad
f
favadusy57
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 16 avril 2014
Version d'Excel : 2016

Message par favadusy57 » 27 mai 2014, 16:10

Re bonjour à tous
Merci pour vos réponses
J'ai opté pour l'option de Nad et elle marche bien mais j'ai encore un autre soucis: mes msg se trouvent dans plusieurs modules différents et à la fin il ne me sort que les msg du module principal, comment peut on y remédier ?
merci encore pour tout
Avatar du membre
Nad
Passionné d'Excel
Passionné d'Excel
Messages : 4'813
Appréciation reçue : 1
Inscrit le : 16 mars 2008
Version d'Excel : 2003 FR - 2007 FR

Message par Nad » 27 mai 2014, 16:19

Re

Je n'ai jamais testé mais essaye

Dans chaque module "complémentaire" le 1er Msg écrit de cette façon = Msg & "xxxx" & vbCr

Tu appelles chaque module complémentaire dans ton module principal
...
Xème test
Msg = Msg & " Xème réponse" & vbCr 

Call Macro2
Call Macro3

If Len(Msg) > 0 Then
    MsgBox vbCr & Msg & vbCr, vbInformation + vbOKOnly, " traitement terminé"
    Exit Sub
End If
End Sub
f
favadusy57
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 16 avril 2014
Version d'Excel : 2016

Message par favadusy57 » 27 mai 2014, 16:24

salut, c'est ce que j'ai fait dans ma macro, dans chaque module complémentaire j'ai commencé par Msg = msg ... :(
E
EngueEngue
Membre impliqué
Membre impliqué
Messages : 1'493
Inscrit le : 12 décembre 2013
Version d'Excel : 2010

Message par EngueEngue » 27 mai 2014, 16:33

En début de ton module
Public msg as string
f
favadusy57
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 16 avril 2014
Version d'Excel : 2016

Message par favadusy57 » 28 mai 2014, 08:55

en début de mon module principal ou des modules complémentaires? je le met avant ou après sub? parce que quand je le met après sub ça ne passe pas .
E
EngueEngue
Membre impliqué
Membre impliqué
Messages : 1'493
Inscrit le : 12 décembre 2013
Version d'Excel : 2010

Message par EngueEngue » 28 mai 2014, 09:00

Au début de ton module principal.

En effet si la variable n'est pas publique tes autres modules n'y ont pas accès.
f
favadusy57
Membre habitué
Membre habitué
Messages : 50
Inscrit le : 16 avril 2014
Version d'Excel : 2016

Message par favadusy57 » 28 mai 2014, 09:02

d'accord mais quand je met public msg as string dans mon module principal, juste après public sub xxx () et que je lance la macro il m'affiche erreur de compilation: attribut incorrect dans une procédure sub ou function
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • MSGbox
    par Fornstep » 12 juin 2015, 11:35 » dans Excel - VBA
    5 Réponses
    130 Vues
    Dernier message par Fornstep
    12 juin 2015, 13:55
  • MsgBox
    par Irys » 5 novembre 2019, 14:35 » dans Excel - VBA
    8 Réponses
    53 Vues
    Dernier message par Pedro22
    5 novembre 2019, 15:55
  • Msgbox
    par Darkangel » 29 septembre 2014, 13:31 » dans Excel - VBA
    4 Réponses
    103 Vues
    Dernier message par h2so4
    29 septembre 2014, 14:36
  • msgbox
    par pompaero » 20 juillet 2014, 13:11 » dans Excel - VBA
    4 Réponses
    284 Vues
    Dernier message par pompaero
    20 juillet 2014, 19:06
  • MsgBox Yes/No
    par Superman96 » 27 août 2016, 16:39 » dans Excel - VBA
    4 Réponses
    2255 Vues
    Dernier message par Superman96
    27 août 2016, 18:18
  • MsgBox si...
    par vaffancolor » 3 octobre 2018, 14:27 » dans Excel - VBA
    3 Réponses
    94 Vues
    Dernier message par dhany
    3 octobre 2018, 17:37