Pop up Excel quand cellule remplie [Résolu/Fermé]

Signaler
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
-
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
-
Bonjour tout le monde,

ca faisait longtemps que je n'étais pas venu posté sur ce forum, et ca me fait plaisir!!

Alors j'ai actuelllement un pb au cours de mon stage:
avec Excel 2003 j'aimerais afficher un pop up (MsgBox)sur l'écran ("N'oubliez pas d'envoyer la facturation pr régulariser la situation 2") lorsqu'une cellule est remplie manuellement (par exemple la cellule B5 dans la colonne B intitulée "livraison matériel sur site") ou qu'une case est cochée... ce texte est-il alors imposé comme étant tjs le mm (mettre tt le temps la mm chose par exemple "Ok") ou bien peut on mettre n'importe quoi a partir du moment ou la cellule est remplie ?!

Le pb est que je ne sais pas comment faire pour cela! si vous pourriez m'aider ce serait super !!

Merci bcp par avance et je vous souahite de passer une agréable journée!!
..Antony..

44 réponses

Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
pour faire un msgbox, la syntaxe est

msgbox libelle du message , bouton, titre du message

Ex :
msgbox "ceci est un message de test !",vbinformation,"Message de Test"

Ensuite, il te suffit de mettre dans le code de ta feuille, les criteres qui vont bien, et de mettre des variables afin que ton message soit different selon les cas...
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
ok super merci bcp nicodisso, ca marche nikel!!

par contre, saurais tu comment faire ca? car je bloque completement........


J'ai crée un formmulaire excel avec cases à cocher...et j'aimerais créer un bouton "envoyé" en bas du formulaire qui, lorqu'on clik desssus, envoi directement le formulaire vers une unique adresse mail (tjs la même)
il faut donc qu'au moment de l'envoi, le formulaire se sauvegarde et qu'Excel se ferme...


Je ne sais pas quel code VBA taper malgré mais nombreuses recherches internet......

Merci, et Bonne journée !!
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
Sois tu fais cela et normalement ton logiciel de messagerie te demanderas si tu autorises l'envoi en direct

ActiveWorkbook.Save
ActiveWorkbook.SendMail "adresse destinataire", "Objets de ton mail"

Rajoutes une gestion d'erreur au cas ou tu répondes NON...

sinon, c'est beaucoup plus compliqué si tu veux l'automatiser à 100 %
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
Slt nico, merci d'avoir répondu!!

voici le code que j'ai sur mon bouton:

Sub Bouton29_QuandClic()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
ActiveWorkbook.SaveAs Filename:=[C7].Value & ".xls"
Application.Quit
End Sub

Il faudrait que je rajoute sur mon script :
ActiveWorkbook.SendMail "roger@entreprise.com", "Bilan de mod" c'est ca ?! et ca suffit?

autre chose, saurais tu comment faire pour que je choisisse comme dossier d 'enregistrement par défaut
\\angfs1\users$\baron\Bureau\Com MOD SAV ??!! car je ne sais pas le sript VBA permettant de faire ca...

Merci par avance nico ;-)
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
Oui, tu mets cela dans tos code et le mail partira tout seul, je te conseille juste pour le tester de mettre ton mail à toi afin qu'il te revienne...

sinon pour enregistrer dans le chemin annoncé

ChDir "\\angfs1\users$\baron\Bureau\Com MOD SAV\"
ActiveWorkbook.SaveAs Filename:= "\\angfs1\users$\baron\Bureau\Com MOD SAV\" & [C7].Value & ".xls"

ca doit fonctionner...
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
ouaou pr la sauvegarde ca marche nikel merci bcp!!!

pr le mail j'ai mis:

ActiveWorkbook.SendMail "roger@entreprise.com", "Bilan de mod"

et voila ce qu'il m'apparait a l'ecran

http://www.cijoint.fr/cjlink.php?file=cj200905/cijCA4s1cA.jpg

je ne sais pas comment faire! l'expediteur sera tjs serge@entreprise.com et le destinataire sera tjs roger@entreprise.com

sachant que les boite mail sont des boites intranet, et qu'il s'agit d'une messagerie intranet........peut etre est ce pr ca que ca ne fonctionne pas !!
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
non en fait, c'est que n'a pas de client par défaut configuré pour envoyer des mails.
du coup il te lance l'assistant
Si tu as un compte mail de configurer et que ton logiciel de messagerie est associé, tu n'auras pas le souci.

Mail en intranet ou pas, c'est un client mail, c'est ensuite sur ton serveur de messagerie que les restrictions d'envoi sont effectives...
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
donc une fois configuré il ne devrait plus y avoir de souci...... le truc c'est qu'on me demande les serveurs entrants et sortants (POP et SMTP) pr lesquels je ne sais pas quoi mettre!

pr info en allant dans les parametres de la messagerie j'ai trouvé ca comme info:

serveur hôte : ANGDS4/SRV/TAH
c'est lotus domino access la messagerie (en intranet)

j'ai pas trouvé d'autres infos.......
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
if faut que dans test complements tu es lotus note de cocher ensuite exploites ca

Sub EnvoiMail()

Dim Fso As FileSystemObject
Dim Fichier_A_Envoyer As String
Dim Envoi As Boolean

Set Fso = New FileSystemObject

Fichier_A_Envoyer = "..."

If Fso.FileExists(Fichier_A_Envoyer) = True Then
Dim Email(1) As String
Email(1) = "destinataire@entreprise.fr"

Envoi = EnvoiNotesMail("Le fichier ", Fichier_A_Envoyer, Email(1), True)
If Envoi = True Then
MsgBox "Votre message a été envoyé à " & Email(1) & ".", vbInformation, "Information"
Else
MsgBox "Echec de l'envoi de votre message à " & Email(1) & ".", vbExclamation, "Avertissement"
End If
Next i
Else
MsgBox "Le fichier a envoyer n'existe pas !", vbExclamation, "Message"
End If

End Sub


Function EnvoiNotesMail(Subject As String, Attachment As String, Recipient As String, SaveIt As Boolean, RDC_A_Envoyer As String) As Boolean

'Set up the objects required for Automation into Lotus Notes
Dim Maildb As NotesDatabase 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim oSession As NotesSession
Dim dbDirectory As NotesDbDirectory
Dim EmbedObj As Object 'The embedded object (Attachment)

Dim objNotesField As Object ' Déclaration de la variable concernant le corps du message

On Error GoTo ErrHandle

Set oSession = New NotesSession
'Démarre une session de notes

' La ligne suivante ne marche qu'avec les versions 5.x et 6.x ,
' c'est l'injection du mot de passe

oSession.Initialize ("mot de passe utilisateur")

'Récupère le nom par défaut de la session
UserName = oSession.UserName

'Ouvre la base mail en utilisant le serveur par défaut

Set dbDirectory = oSession.GetDbDirectory(Declarations_Des_Variables.Serveur_LotusNote)
Set Maildb = dbDirectory.OpenMailDatabase

'Création du formulaire d'envoi de mail
Set MailDoc = Maildb.CreateDocument()

MailDoc.AppendItemValue "Subject", Subject ' remplissage du Sujet
MailDoc.AppendItemValue "SendTo", Recipient ' adresse du destinataire Email(i)

' Construction du corps du message
Set objNotesField = MailDoc.CreateRichTextItem("Body")

With objNotesField
.AppendText "Bonjour,"
.AddNewLine 1
.AppendText "Ci-joint le fichier "
.AddNewLine 1
.AppendText "Cordialement"
.AddNewLine 1
.AppendText "Expediteur"
.AddNewLine 3
End With

'Permet d'attacher un document au mail
If Attachment <> "" Then
Set AttachME = MailDoc.CreateRichTextItem("Attachment")
Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Attachment")
End If

'Envoi du document

If SaveIt = True Then
MailDoc.SaveMessageOnSend = SaveIt 'si à True, Lotus sauvegarde le mail envoyé
End If

Call MailDoc.Send(False)

prvSendNotesMail = True
GoTo ExitHandle

ErrHandle:
MsgBox Err.Description
prvSendNotesMail = False

ExitHandle:
If Err.Number = 0 Then
EnvoiNotesMail = True
Else
EnvoiNotesMail = False
End If
'Vidage mémoire
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set oSession = Nothing
Set dbDirectory = Nothing
Set EmbedObj = Nothing
End Function
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
"If faut que dans test complements tu es lotus note de cocher".....je ne sais pas ou ca se fait ni comment !!

"ensuite exploites ca ".......
hheeuu...nouveau module? ou ds scriot de la feuille? ou ds thisworkbook?

"Fichier_A_Envoyer = "..."
nom du fichier que je dois mettre en PJ ?

"Envoi = EnvoiNotesMail("Le fichier ", Fichier_A_Envoyer, Email(1), True)"
c'est quoi la différence entre "le fichier" et "Fichier_A_envoyer"

"La ligne suivante ne marche qu'avec les versions 5.x et 6.x"
ici c'est, Domino Web Access Version 6.5.4 Version 429

Set dbDirectory = oSession.GetDbDirectory(Declarations_Des_Variables.Serveur_LotusNote)
je ne sais pas ce que cela signifie

Set AttachME = MailDoc.CreateRichTextItem("Attachment")
Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Attachment")
je met quoi a la place de "attachment"

Merci en tt cas nico de t'impliquer autant, et d'avoir autant de patience, ca m'aide vraiment !!

@ tt a l'heure !
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
"If faut que dans test complements tu es lotus note de cocher"
menu outils/reference dans VBA

"ensuite exploites ca ".......
nouveau module

"Fichier_A_Envoyer = "..."
Chemin acces au fichier

"Envoi = EnvoiNotesMail("Le fichier ", Fichier_A_Envoyer, Email(1), True)"
"le fichier = objet du mail" et "Fichier_A_envoyer variable contenant le chemin d'acces"

ici c'est, Domino Web Access Version 6.5.4 Version 429
oui alors la je suis marron, j'étais parti avec Notes

Set dbDirectory = oSession.GetDbDirectory(Declarations_Des_Variables.Serveur_LotusNote)
Tu n'avais pas à y toucher

Set AttachME = MailDoc.CreateRichTextItem("Attachment")
Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Attachment")
je met quoi a la place de "attachment"
tu touchais à rien

je suis désolé, ce code pourra toujours servir à ceux qui ont Lotus Note, pour domino, il faudrait chercher ( peut etre sur vbfrance.com )
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
aa ok merde alors nico!! j'avais pas saisi que ca collait pas avec ce que j'ai comme version.........je ss deg pr toi en priorité (pr le boulet que t'as réalisé et qui me servira pas!) et pi tant pis pr moi.....

En tt cas mille merci pour l'aide que tu m'as apporté, et pr ta patience, vraiment ca fait plaisir........

Bonne journée ensoleillée a toi et bon appétit, a bientôt que le forum !!
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
merci a toi aussi en esperant trouver une solution...
je vais quand meme chercher au cas ou
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
regardes quand meme parce qu'il y a l'air d'avoir un ammalgamme entre lotus note et domino donc on ne sais jamais...
Sinon dans le prire des cas, il faudrait creer un mail sur un autre systeme de messagerie ( style gmail ou autre et ensuite configurer le client que tu avais au tout debut afinde l'utiliser )
Ca c'est tout a fait possible...
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
Slt nico ;-)

J'espère que t'as passé 1 bon week end ;-)

j'ai une chtite question en prgrammation qui je pense te fera sourire par sa simplicité mais je beug:

j'aimerais que lorsque je mette dans la colonne I intitulée "date de fin de travaux" un numéro de semaine (planification) comme par exemple "s25" un pop up apparaisse lorsque l'on sera effectgivement en semaine 25 pr me prévenir de penser a facturer.....

J'espère que tu comprends ce que j'aimerais faire ;-)

Merci par avance pr le coup de main !!

PS: je sais que ceci est le script pr convertir une date en numéro de semaine:

Public Function Semaine(dat As Date) As Integer
Dim a As Integer
a = Int((dat - DateSerial(Year(dat), 1, 1) + _
((Weekday(DateSerial(Year(dat), 1, 1)) + 1) _
Mod 7) - 3) / 7) + 1
If a = 0 Then
a = Semaine(DateSerial(Year(dat) - 1, 12, 31))
ElseIf a = 53 And (Weekday(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 <= 3 Then
a = 1
End If
Semaine = a
End Function
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
Solution trouvée !!!

peu académique certes mais ca marche....... !!
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
il me semblait que pour la semaine, c'était prévue :

Format("01/01/2009", "WW")

remplace avantageusement

Int((dat - DateSerial(Year(dat), 1, 1) + ((Weekday(DateSerial(Year(dat), 1, 1)) + 1) Mod 7) - 3) / 7) + 1

;-)
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
Slt nico,

tjs en place ;-)

Pour ce chti pb ca y est j'ai réglé le pb.....à ma facon ;-)

Sinon je ss reparti sur mon excel et j'ai un truc à faire tendu que je ne sais pas programmer:

Je souhaiterais que ma macro excel recopie (copie/colle) la valeur d'une cellule de mon fichier excel dans 1 emplacement précis et prédéfini d'une feuille ISO (qui est un fichier .doc protégé en écriture sauf à 2 endroits modifiables ou c'est la qu'il faudrait réinjecter les valeurs excel)

Je ne sais pas quel code VBA permettrait ceci , sachant que ma macro ouvre dores et déjà le fichier.doc..

j'ai remarqué qu'en faisant (Ctrl+C) sur excel, puis directement (Ctrl+V) aprés avoir ouvert le .doc, la valeur désirée se colle à l'endroit voulue....
la 2eme valeur a copier/coller se fait également par Ctrl+C depuis Excel et Ctrl+V sur word aprés avoir fait "une tabulation" sur le .doc qui fait directement passer à l'autre zone modifiable du fichier...

j'ai tenté ca:

With DocWord
Set AppWord = CreateObject("Word.Application")
Application.DisplayAlerts = True
AppWord.ShowMe
AppWord.Visible = True
Set DocWord = AppWord.Documents.Open("C:\\ mon fichier.doc", ReadOnly:=False)
End With
With AppWord
ThisWorkbook.Worksheets("Feuil1").Range("C9").Copy
With ActiveDocument.Tables(2).Cell(1, 2)
.Range.Paste
.Select
End With
End With

mais j'ai une erreur 424 pr cette commande: With ActiveDocument.Tables(2).Cell(1, 2)

Aurais tu une idée ?!
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
parce que la je ne sais pas trop quoi faire ;-)
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
With ActiveDocument.Tables(2).Cell(1, 2)
faudrait que ca corresponde à mes emplacmeents dispos sur le .doc que je ne sais pas comment caractériser!