MessageBox : affichage une seule fois

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonsoir Le Forum.
Merci pour votre intervention pour un petit - pour les experts -problème que je vous soumets.

Voici :

Mon but est de n’afficher qu’une fois le message : à la 1ère ouverture du fichier et pas aux ouvertures suivantes.


- en feuille (1) mise en place d’un « compteur »
- à l’ouverture, vérification de la cellule G11 :
rien ? alors affichage du message ;
plus grand que rien ou 0 ? alors pas d’affichage du message.

A moins que vous trouviez une autre solution pour « neutraliser » le messsage après une première lecture :
- mise en place automatique, par macro, d’un « ‘ » devant MsgBox "Message final du… (cette solution est plus intéressante
- écrasement du message

Mais j’ai déjà une erreur sur la ligne If Range("G11") > 0
Peut-être faut-il mettre Range(« G11 »).Value ?

Sub …..
….
….

With Sheet(1)
If Range("G11") > 0
MsgBox "Message final du 17/08 à 19 :25" & Chr(13) & Chr(10) & "Bonjour et bon usage !" & Chr(13) & Chr(10) & "Et à un prochain message !" & Chr(13) & Chr(10) & "Webperegrino »
Range("G11") = Range("G11") + 1
End With
Application.ScreenUpdating = True
End Sub
 

skoobi

XLDnaute Barbatruc
Re : MessageBox : affichage une seule fois

Bonsoir Webperegrino,

pense à mettre ton code au bon format à l'aide du bouton "#".


Mais j’ai déjà une erreur sur la ligne If Range("G11") > 0
Il manque le "End If" à la fin:

Code:
Sub …..
….
….

With Sheet(1)
If Range("G11") > 0
MsgBox "Message final du 17/08 à 19 :25" & Chr(13) & Chr(10)  & "Bonjour et bon usage !" & Chr(13) & Chr(10) & "Et à  un prochain message !" & Chr(13) & Chr(10) & "Webperegrino »
Range("G11") = Range("G11") + 1
End With
Application.ScreenUpdating = True
[COLOR=Red][B]End If[/B][/COLOR]
End Sub

De plus, tu n'utilises pas "With" .... "End With" correctement. Pense à ajouter le point "." quand tu y fais référence:

Code:
With Sheet(1)
 If [B][SIZE=5].[/SIZE][/B]Range("G11") > 0
 .........
 [B][SIZE=5].[/SIZE][/B]Range("G11") = [SIZE=5][B].[/B][/SIZE]Range("G11") + 1
 End With
 

Staple1600

XLDnaute Barbatruc
Re : MessageBox : affichage une seule fois

Bonjour Webperegrino, skooby, le fil,le forum


Un exemple tout simple
Dans un module
Code:
Sub mess_age()
Application.Run Switch(Feuil1.[A1] = 1, "P_m", Feuil1.[A1] > 1, "D_m")
End Sub
Code:
Sub P_m()
MsgBox "Premier message"
End Sub
Code:
Sub D_m()
MsgBox "Dernier message"
End Sub
Dans ThisWorkbook
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Feuil1.[A1] = Feuil1.[A1] + 1
End Sub
Code:
Private Sub Workbook_Open()
mess_age
End Sub
 

Fo_rum

XLDnaute Accro
Re : MessageBox : affichage une seule fois

salut

attention:
Code:
With Sheet(1)
 If .Range("G11") > 0 [B]Then[/B]
 .........
 [B]end if[/B]
.Range("G11") = .Range("G11") + 1
 End With
Une autre proposition : le message "n'apparaitra plus jamais" après la première ouverture.
Bien entendu, on peut toujours craquer le code !
 

Pièces jointes

  • UneSeuleFois.xls
    19 KB · Affichages: 146

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : MessageBox : affichage une seule fois

Skoobi, Stapple1600, Fo Rum
Le Forum,
Bonjour,

Me voici avec trois possibilités à expérimenter ! Les explications que vous m'avez mises me seront très utiles pour comprendre le déroulement de ces macros.
Merci pour vos interventions, pédagogie incluse.
Bonne journée avec Excel et avec Le Forum,
Webperegrino
 

Cousinhub

XLDnaute Barbatruc
Re : MessageBox : affichage une seule fois

Bonjour, Tous

@Fo_rum.... :mad:

Qui te dit, que j'ai envie d'enregistrer ton fichier, uniquement parce que je l'ai ouvert?

A l'avenir, lorsque tu mets du code, dans l'open d'un classeur, tu commentes toutes les actions du type "Enregistrer, Imprimer, Masquer telle barre d'outils, Modifier l'environnement d'Excel....."
Et tu expliques ce qui se passera, en dé-commentant ces lignes (pour le questionneur, et autres personnes intéressées....)

Fort heureusement, il est rare que j'autorise les macros, à l'ouverture d'un fichier téléchargé....(et je ne suis pas le seul, mais bien des personnes les autorisent, et se retrouvent donc avec un nouveau fichier, dans le répertoire "Temp"....

Cordialement

Bonne journée
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : MessageBox : affichage une seule fois

Bonjour Le Forum, les Amis,

J'en apprends ICI tous les jours !
Je me suis inspiré de vos informations pour vous montrer une macro que j'ai donc adaptée, et qui fonctionne dans Thisworkbook.

Intéressant : la macro reste dans mes codes pour formulation d'un nouveau message ultérieur.

Pour les débutants comme moi qui seraient intéressés :

Private Sub Workbook_Open()
'Merci STAPPLE1600 dans fil Probleme MsgBox 20/08/2010 à 15:09
Application.ScreenUpdating = False
Dim Titre$, Lignes$, Message$ ' , i&
If Feuil1.[A1] = "" Then 'ou bien 0
Titre = "INFORMATION"
Lignes = " Message final du 17/08 à 19 :25" & vbLf
Lignes = Lignes & " Bonjour et bon usage !" & vbLf
Lignes = Lignes & " Et à un prochain message !" & vbLf
Lignes = Lignes & " Ce message n'apparaîtra pas une deuxième fois." & vbLf
Lignes = Lignes & " Webperegrino "
Message = Lignes
MsgBox Message, 6, Titre ' ou ' For i = 1 To 6 'MsgBox Message, i, Titre 'Next i
Feuil1.[A1] = Feuil1.[A1] + 1
End If
Application.ScreenUpdating = True
End Sub

D'autre part, le fichier de FO RUM m'a paru très efficace. Toutefois, à mon niveau, je n'ai rien compris à son fonctionnement après le premier affichage.
En effet après l'affichage du message, je ne retrouve pas d'information dont <<l'affaire>> est construite, quand je fais Alt + F11 pour voir les éventuels codes... Dommage et un peu frustrant pour le débutant VBA que je suis.
Mais merci toutefois à FO RUM de s'être penché sur le sujet.

Grand merci aux autres aussi pour leur efficacité à répondre également.
Vos aides me sont précieuses.
Webperegrino
 

Pièces jointes

  • Message affiché une fois.xls
    25 KB · Affichages: 111

Discussions similaires

Réponses
2
Affichages
265

Statistiques des forums

Discussions
312 305
Messages
2 087 083
Membres
103 458
dernier inscrit
Vulgaris workshop