Macro message box delai dépassé

Bien le bonjour a tous,

Dur de reprendre le travail avec le ventre plein de chocolat...

Je ne m'y connai pas du tout en VBA et je souhaiterai cree une macro avec un avertisseur de délai.

Je m'explique, je souhaiterai un message box qui s'affiche à l'ouverture de mon fichier selon les conditions suivante :

- Dans la colonne H ( date de retour prevue) j'ai des dates. Si la date est dépassée le message d'ouverture m'avertira Si plusieur date sont dépassées, le message m'avertira en me presisant laquelle [ ( colonne A + colonne F) = date de retour dépassée ! ) ]

Exemple : dans mon tableau les 2 premiers materiels devraient déja etre rendues.

Alors à l'ouverture du fichier , message box :

"Attention, Monobrosse_harlfeur le couvent et Aspirateur_Bureaux devraient déja etre retournées"

Je ne suis pas sur d'etre tres clair... Je vous joint mon fichier et reste bien entendu a votre disposition si besoins.

Merci beaucoup

Bonjour,

Je serais toi, je ferai ça avec un UserForm, car les MsgBox sont limitées à 1024 caractères.

Cdlt.

1023

Tu peux contourner la limite avec un popup shell par :

Const OK_BUTTON = 0
Const AUTO_DISMISS = 0
Set objShell = CreateObject("Wscript.Shell")
objShell.Popup TonMessage, AUTO_DISMISS, "Titre de la msgbox", OK_BUTTON

Bonjour,

Je pense que c'est ça que tu veux.

Cdlt.

Bonjour,

Bonjour EngueEngue,

Tu peux développer

Bonjour,

La solution de MATTSLY fonctionne, je vais la tester avec une plus grosse base de donnée merci beaucoup.

Concernant les messages d'avant, j'avou ne pas avoir vraiment compris...

Merci à vous

Bonjour,

Manoss78, surtout il faut que tu gardes la même mise en forme c'est à dire de fusionner à chaque fois 4 ligne sinon, ça ne fonctionnera plus. Et là, la boucle For va jusque 100 donnc si tu as plus de ligne il faut modifier ce chiffre. (Au pire mets 50 000 pour être tranquille)

Et je te conseillerai de mettre plutôt un bouton au lieu de l'ouverture du fichier...

Cdlt.

Pour contourner la limite de 1023 Chars sur une msgbox, tu tu peux passer par un echo du WSH

Wscript.Echo tonmessage

Le problème c'est que cet echo te met par défaut le nom de ta msgbox : "Windows Script Host"

Pour pouvoir modifier le titre de la msgbox tu peux donc utiliser un popup shell du WSH comme indiqué plus haut avec 4 arguments.

1 Le message

2 La duration, si 0 elle reste jusqu'à que l'on clique sur OK

3 le titre de la msgbox

4 les boutons du popup, 0 = uniquement Ok button

Comment je trouve le code?

J'ouvre mon fichier, je clique dans visual basic mais je n'ai aucun code d'affiché

Re,

C'est plus clair, mais pas encore limpide.

Merci

Bonjour,

Le code se trouve dans la feuille ThisWorkbook...

Cdlt.

Il tu suffit de chercher sur le msdn la méthode popup de la méthode WSH, tu auras l'explication de microsoft!

Merci EngueEngue,

toujours aussi diplomate

MattSLy,

J'ouvre mon fichier, le message s'affiche. Je le ferme. Ensuite visualiser le code et la je n'ai rien meme pas de choix de page... Je croi que j'ai supprimé un affichage.

1

Re-rentre ce code dans le ThisWorkbook :

Private Sub Workbook_Open()

Dim recl As String
Dim i As Long
Const OK_BUTTON = 0
Const AUTO_DISMISS = 0

Set objShell = CreateObject("Wscript.Shell")
recl = ""
For i = 2 To 1200 Step 4
If Sheets("Feuil1").Range("H" & i).Value <= Date Then
recl = recl & vbNewLine & Range("F" & i)
End If
Next i
If recl <> "" Then
objShell.Popup "Groupe n'ayant pas rendu le matériel :" & vbNewLine & recl, AUTO_DISMISS, "Avertissement", OK_BUTTON ' Passer par popup pour éviter la limitation à 1023 caractères
Else
End If

End Sub

Je trouve que j'ai été très diplomate! J'aurais pu te demander de chercher à la première!

Un plaisir!

Je n'utilise que ce genre de popup maintenant puisque pour mettre un timeout dans une msgbox... C'est la galère! il faut faire tourner un timer qui checke si une fenêtre est ouverte et la fermer... ce qui ralentit beaucoup pour les automatisations

J'ai recopié le code comme tu m'as dis et j'ai copier les lignes en plus pour avoir une base de données complete. Cependant maintenant quand j'ouvre le fichier , le message me parle de tout mes groupe meme si je n'ai pas de date entrées...

Bonjour,

J'ai une petite erreur, il manquait juste à vérifier dans le code si la colonne H était vide ou non.

Pour moi la ça fonctionne.

Cdlt.

Ba écoute oui sa fonctionne tres bien. L'idee est la c'est exactement ce que je veux. Si vous avez des pistes d'amelioration n'hesitez pas.

Je n'y connai rien en macro et visual Basic. Vous me conseillez quoi pour pouvoir apprendre par moi meme? Les tutos du forum suffisent?

Cordialement

Bonne adaptation Mattsly

Sauf que tu itères inutilement...

Teste ça:

msgbox(Sheets("Feuil1").Range("H" & Sheets("Feuil1").rows.count).end(xlup).row)
Rechercher des sujets similaires à "macro message box delai depasse"