Pop up Excel quand cellule remplie

Résolu
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   -  
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   -
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..
Configuration: Windows 2003 Internet Explorer 6.0

44 réponses

  • 1
  • 2
  • 3
Résumé de la discussion

Un utilisateur souhaite afficher un MsgBox dans Excel 2003 dès qu’une cellule est remplie manuellement ou qu’une case est cochée, et se demande si le texte peut être fixe ou variable.
Les propositions privilégient l’usage d’une macro VBA pour déclencher le message, avec aussi des pistes autour d’un transfert de données vers d’autres fichiers et d’éventuelles interactions avec Word.
Certaines réponses évoquent des obstacles comme la protection des documents et l’activation des modules, et préconisent des approches alternatives telles que des boucles de lecture/écriture entre classeurs.
En fin de compte, les échanges indiquent des avancées partielles liées notamment à la sauvegarde ou à l’envoi d’e-mails, sans aboutir à une solution unique disponible immédiatement.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. NicoDisso Messages postés 231 Statut Membre 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...
    0
  2. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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 !!
    0
  3. NicoDisso Messages postés 231 Statut Membre 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 %
    0
  4. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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 ;-)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. NicoDisso Messages postés 231 Statut Membre 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...
    0
  7. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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 !!
    0
  8. NicoDisso Messages postés 231 Statut Membre 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...
    0
  9. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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.......
    0
  10. NicoDisso Messages postés 231 Statut Membre 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
    0
  11. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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 !
    0
  12. NicoDisso Messages postés 231 Statut Membre 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 )
    0
  13. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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 !!
    0
  14. NicoDisso Messages postés 231 Statut Membre 32
     
    merci a toi aussi en esperant trouver une solution...
    je vais quand meme chercher au cas ou
    0
  15. NicoDisso Messages postés 231 Statut Membre 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...
    0
  16. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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
    0
  17. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    Solution trouvée !!!

    peu académique certes mais ca marche....... !!
    0
  18. NicoDisso Messages postés 231 Statut Membre 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

    ;-)
    0
  19. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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 ?!
    0
  20. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    parce que la je ne sais pas trop quoi faire ;-)
    0
  21. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   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!
    0
  • 1
  • 2
  • 3