Relier 2 macros à 1 bouton
Bonjour,
Je suis désespérée...
Je ne suis pas experte avec les VBA. Je vous remercie à l'avance de m'aider à apprendre. Je suis ok pour faire une macro et la relier à 1 bouton. Cependant, j'essaie d'en mettre deux et il y a quelque chose qui cloche.
Ce que je veux: 1ère macro : doit compléter certains champs obligatoires et lorsqu'on clique sur le bouton Envoyer, un avertissement apparait et empêche d'envoyer le fichier. 2e macro: En cliquant sur Envoyer doit envoyer par courriel si les champs sont tous compléter.
Mon problème: Il m'avertit que des champs sont manquants, cependant, ensuite le curseur se met à tourner sans fin et je dois débloquer à partir du gestionnaire des tâches.
Je vous mets mon fichier en pièce jointe pour vous aider à m'aider :)
Et si je pousse ma chance un peu... j'aimerais aussi faire en sorte que lorsqu'on clique sur Envoyer, que cela copie le fichier et l'enregistre sur l'ordi de la personne qui complète le formulaire.
Garf
Bonjour,
Ceci non vérifié;
Sub Controle_et_envoi_mail()
Application.ScreenUpdating = False
'on vérifie si toutes les cellules sont remplies
If ThisWorkbook.Worksheets("Commande").Cells(41, 3).Value = "" Or ThisWorkbook.Worksheets("Commande").Cells(41, 10).Value = "" Or _
ThisWorkbook.Worksheets("Commande").Cells(42, 3).Value = "" Or ThisWorkbook.Worksheets("Commande").Cells(43, 3).Value = "" Or _
ThisWorkbook.Worksheets("Commande").Cells(44, 3).Value = "" Or ThisWorkbook.Worksheets("Commande").Cells(44, 10).Value = "" Or _
ThisWorkbook.Worksheets("Commande").Cells(199, 6).Value = "" Then
'si c'est incomplet, message d'avertissement et sortie macro
MsgBox "Veuillez compléter tous les champs obligatoires", vbOKOnly, "ERREUR: champs obligatoires"
Exit Sub
Else
'si tout est rempli alors on envoie le mail
'ici on demande d'utiliser Outlook comme client de messagerie'
Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.application")
Set MonMessage = MaMesssagerie.createitem(0)
'ici nous définissons les champs du mail'
'entre guillemet il faut indiquer les adresses mail'
MonMessage.to = "cdl@daa-quebec.org"
'ici nous commençons la rédaction du mail'
MonMessage.attachments.Add Fichier
'sujet du mail'
MonMessage = "Bon de commande"
'corps du mail'
contenu = "Bonjour,"
contenu = contenu & Chr(10) & Chr(13)
'les caractères Chr indiquent un saut de ligne'
contenu = contenu & "Veuillez trouver en pièce jointe le Bon de commande" & Chr(10) & Chr(13)
contenu = contenu & "Cordialement" & Chr(10) & Chr(13)
MonMessage.body = contenu
'ici on provoque l'envoi du mail et de la pièce jointe'
MonMessage.send
'réinitialisation de la messagerie'
Set MaMessagerie = Nothing
'Boite de dialogue qui confirme l'envoi du message et de la pièce jointe'
MsgBox "Votre mail a bien été envoyé"
'Enregistrement sur le PC
ActiveWorkbook.Save
End If
End Sub
Cdlt
Bonjour Arturo83,
Merci pour ton aide! Cependant, quand je clique sur Envoyer, une fois les champs obligatoires complétés, il n'y a rien qui se passe et le curseur se met à tourner sans fin.
Merci
Garf
Bonjour,
Je ne peux pas faire les tests car je n'utilise pas "Outlook", en revanche la partie de code qui semble donner des soucis se situe après le "Else".
Pour trouver d'où vient le problème, exécutez la macro en pas à pas avec la touche F8 ainsi, vous verrez bien où il se situe.
A mon avis, si la macro piétine, je situerai le problème dans cette zone, mais seule une exécution en pas à pas de la macro (avec F8), vous le confirmera.
'ici nous définissons les champs du mail'
'entre guillemet il faut indiquer les adresses mail'
MonMessage.to = "cdl@daa-quebec.org"
'ici nous commençons la rédaction du mail'
MonMessage.attachments.Add Fichier
'sujet du mail'
MonMessage = "Bon de commande"Cdlt
Bonjour Garf96 et Salut @Arturo83
Voici ma proposition.
Dans un 1er temps, je crée la préparation du mail en colonnes N2:N5
Puis je contrôle toutes les zones de l'identification et l'option en F199.
Ensuite je crée la zone A33:J202 en Pdf
Au clic sur Envoyer le fichier pdf sera créé et le mail sera envoyé (dans la macro, mettre l'apostrophe devant .display et l'enlever devant .send)
Cdt
Papy Henri
Re Bonjour,
Une petite erreur dans la macro ExécuterControles, (j'avais oublié les . devant Range) la remplacer par celle-ci:
Sub ExécuterControles()
'Vérification des champs obligatoires
With ThisWorkbook.Worksheets("Commande")
If .Range("C41").Value = "" Then
MsgBox "Veuillez renseigner le nom du groupe."
.Range("C41").Select
Exit Sub
ElseIf .Range("J41").Value = "" Then
MsgBox "Veuillez renseigner le N° du groupe."
.Range("J41").Select
Exit Sub
ElseIf .Range("C42").Value = "" Then
MsgBox "Veuillez renseigner le nom du responsable du groupe."
.Range("C42").Select
Exit Sub
ElseIf .Range("C43").Value = "" Then
MsgBox "Veuillez renseigner l'adresse du groupe."
.Range("C43").Select
Exit Sub
ElseIf .Range("C44").Value = "" Then
MsgBox "Veuillez renseigner le mail du groupe."
.Range("C44").Select
Exit Sub
ElseIf .Range("J44").Value = "" Then
MsgBox "Veuillez renseigner le téléphone du groupe."
.Range("J44").Select
Exit Sub
ElseIf .Range("F199").Value = "" Then
MsgBox "Veuillez cocher une des options"
.Range("F199").Select
Exit Sub
'Ne pas envoyer tant que toutes les zones de l'dentification ne sont pas renseignées.
End If
End With
Call ImprimerPDF
End SubVoici le fichier
Papy Henri