Fonctionnement MsgBox VbYesNoCancel
Et non justement, je ne trouve pas la solution pour que lorsque je clique sur le bouton "Envoyer mail" de la fenêtre "Consultation" ça m'ouvre le devis au format pdf pour que je le vérifie et quand je le ferme, ça ouvre outlook avec le mail pré-rédigé et le devis au format pdf en pièce jointe.
Je n'ai pas trouvé tes modifications dans le fichier que tu as mis en pièce jointe dans ta réponse de ce matin... ou alors je ne suis pas réveillé...
Excuse moi Tranbi mais la je comprends plus
Moi je me suis occupé jusqu'a maintenant de envoie devis dans l'userform Devis et maintenant tu me parles de consultation...
J'ai regardé ta macro de envoie devis dans consultation ça m'a l'air correct...
Non ce n'est pas correct
quelle est la valeur de rep et de parcours?
regarde la macro que j'ai fait dans devis....
et oublie pas le attachement nom du fichier
A+ François
En fait, je me suis lancé dans ce projet un peu à la va vite...
Du coup, comme je débute en vba, je découvre au fur et à mesure ses possibilités.
C'est pour ça que j'ai regroupé le UserForm Devis sur le UserForm Consultation. D'où la confusion dans nos échanges.
Donc maintenant, je travaille uniquement sur les UserForm Saisie nouveau bateau et Consultation (multipage dans lequel on retrouve la partie Devis)
J'ai donc voulu faire un peu de nettoyage en supprimant les UserForm qui n'avaient plus d'intérêt (FicheB Bateau et Devis) et je découvre que je ne peux plus enregistrer de nouvelles saisies. Est-ce que le problème peut venir de la suppression des UserForm ?
Et si je supprime le paramètre vbdefaultbutton1, c'est MaMessagerie qui devient la variable non définie...
Pour ce qui est de l'envoi du mail au demandeur, ça fonctionne presque nickel. Je n'arrive juste pas à définir le chemin d'accès par défaut. J'ai modifié la structure du nom de fichier en supprimant la variable LaDate pour que le nom de fichier corresponde à mes attentes. Mais si je modifie le dossier d'enregistrement, la fois suivante je me retrouve dans le dernier dossier où j'ai enregistré ma pièce jointe.
Sinon, c'est nickel pour ce qui est de l'ouverture de la pièce jointe puis de l'envoi du mal avec cette même pièce jointe.
Private Sub BoutonMailDemandeur_Click()
Dim i As Long, MonDevis As Object
i = Sheets("LISTE").Range("V1").Value
[t_Bateaux].Item(i, 31) = tb_DdeurChgt
[t_Bateaux].Item(i, 32) = Me.tb_DdeurTrp
[t_Bateaux].Item(i, 34) = Consultation.tb_PrestChgt
[t_Bateaux].Item(i, 35) = Consultation.tb_PrestTrp
Sheets("Devis_transport").Visible = True
Sheets("Devis_transport").Select
ActiveWorkbook.RefreshAll
Sheets("Devis_transport").Range("D4") = Date 'Date du jour
Sheets("Devis_transport").Range("B6") = [t_Bateaux].Item(i, 4).Value 'Nom détenteur
Sheets("Devis_transport").Range("B8") = [t_Bateaux].Item(i, 9).Value & " - " & [t_Bateaux].Item(i, 10).Value & " " & [t_Bateaux].Item(i, 11).Value 'Adresse détenteur
Sheets("Devis_transport").Range("B11") = [t_Bateaux].Item(i, 3).Value 'Nom du bateau
Sheets("Devis_transport").Range("B13") = [t_Bateaux].Item(i, 15).Value & "m" 'Longueur
Sheets("Devis_transport").Range("D13") = [t_Bateaux].Item(i, 16).Value & "m" 'Largeur
Sheets("Devis_transport").Range("B16") = [t_Bateaux].Item(i, 6).Value 'Localisation bateau
Sheets("Devis_transport").Range("C18") = [t_Bateaux].Item(i, 23).Value 'Distance en km
Sheets("Devis_transport").Range("B21") = [t_Bateaux].Item(i, 21).Value 'Type de de véhicule pour le transport
Sheets("Devis_transport").Range("C21") = Val(Replace([t_Bateaux].Item(i, 31), ",", ".")) + Val(Replace([t_Bateaux].Item(i, 32), ",", ".")) 'Prix chargement + transport
Sheets("Devis_transport").Range("D21") = (Val(Replace([t_Bateaux].Item(i, 31), ",", ".")) + Val(Replace([t_Bateaux].Item(i, 32), ",", "."))) * 1.2 'Prix TTC
'conversion pdf du listing et affichage
Dim PieceJointe As String
Dim repertoire As String, nomFichier As String, extension As String
repertoire = "C:\Users\b.lastennet\Documents\AO APER\Suivis\Test"
'au cas où l'usager annule au lien d'enregistrer
On Error Resume Next
nomFichier = "Devis transport bateau " & tb_Bateau & " - " & tb_NomDemandeur
extension = ".pdf"
PieceJointe = Application.GetSaveAsFilename(nomFichier, fileFilter:="Pdf (*.pdf), *.pdf")
' If PieceJointe <> False Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
PieceJointe, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=True
Sheets("Devis_transport").Visible = False
Set MonDevis = CreateObject("Outlook.Application") 'Création d'un objet Outloook
Set MonDevis = MonDevis.CreateItem(0)
MonDevis.Display
With MonDevis
.To = tb_Mail
.Subject = "Demande devis transport bateau" & " " & tb_Bateau & " - " & FicheBateau.tb_Immat & " - " & tb_NomDemandeur
.htmlbody = "Bonjour," & "<br><br>" & _
"Veuillez trouver en pièce jointe le devis pour le transport de votre bateau"
.Attachments.Add PieceJointe
.Display 'afficher le mail avant de l'envoyer sinon placer send pour l'envoyer
End With
' End If
End SubBon, j'espère que je n'ai tout foutu en l'air...
A te lire en espérant que tu puisses me rassurer
Bonne soirée
Bonjour
Problème de mail résolu
Bonjour
Pour les nouveaux bateaux tu as toujours l'userform accessible de la page d'accueil
Voir ajouter un bouton sur la feuille suivi_Aper
A+ François
Bonjour Fanfan et le forum,
Après une semaine de facturation, me voila de retour aux affaires...
Pour commencer, la feuille Suivi_APER ne sera pas visible, c'est juste pour naviguer entre la feuille et l'usf durant la conception du projet.
A l'ouverture du fichier, seule la fenêtre menu apparaîtra.
Problème, dans mon usf Consultation, à l'ouverture, si je clique sur le bouton Relance commercial, ça affiche l'onglet Relance commercial... Normal... Mais si dans la foulée, sans rien saisir, je clique sur Devis ça m'indique un premier message qui, lui, est bien prévu à ce moment là, mais quand je le valide, un second message qui n'a rien à faire là apparaît. Et quand je le valide, la fenêtre de débogage s'ouvre.
Là, j'avoue que je ne sais pas du tout à quoi cela est dû...
Un peu d'aide serait la bienvenue
Merci d'avance
Bonjour
Quand tu clic sur Relance commercial tu rempli la listbox 2
quand tu clic sur devis tu interroge la listbox 1.....
J'ai donc rempli la listbox1 avec les données de la listbox 2...
A+ François
Bonjour Fanfan,
Nickel, ça marche. J'ai réorganisé la procédure BoutonDevis car les messages apparaissaient dans le désordre et provoquaient des bugs.
Question : pour un confort de navigation entre les différents onglets de l'usf Consultation, est-ce que je dois prévoir tous les cas de figure et les rédiger un à un, ou est-ce qu'il y a un moyen plus simple ? C'est pas très clair comme question, j'en conviens, mais je ne vois pas comment l'exprimer...
J'essaye de m'y remettre un peu plus sérieusement histoire d'avancer plus vite, mais c'est pas gagné...
Bonne soirée
@+ Bertrand
Bonjour
J'ai modifié l'usf consultation
Pour le reste malheureusement il n'y a pas de solution miracle
Il faut tout tester un à un
A+ François
Bonjour
Est-ce qu'on peut lancer une procédure sur le changement de page d'un multipage ?
Par exemple, lorsque je quitte la page "Fiche bateau", le textbox1 et son label disparaissent. Ils réapparaissent à la réouverture de la page "Fiche bateau".
Je pense que ça me faciliterait les choses.
Bon week-end
Bertrand
Bonjour
J'ai un problème avec le message qui s'affiche lors de l'enregistrement d'un nouveau bateau. En effet, si le combobox "Devis nécessaire" est "OUI", alors il faut envoyer un mail au commercial. Ca c'est bon.
En revanche, si le combobox "Devis nécessaire" est "NON", la question ne pose pas et il y a juste à enregistrer les données.
J'ai essayé de bouger l'envoi du mail mais ça ne marche pas...
J'imagine que c'est simple, mais bon...
Bon week-end à tous
Bonjour
J'ai remonté la ligne
If [t_Bateaux].Item(1, 1) <> "" Then n = [t_Bateaux].Rows.Count + 1 Else n = 1au-dessus de l'enregistrement des données, sinon celles-ci s'enregistraient dans l'en-tête de colonne.
Et j'ai également rajouté une MsgBox pour dire que le bateau était bien enregistré même lorsqu'il n'y a pas de devis.
Sinon, c'est nickel. Je pense que je n'en serai pas arrivé là sans ton aide.
Mais il reste encore du chemin à parcourir...
Bonne soirée
Bonjour
Petit blocage pour lequel je ne trouve pas de solution viable.
Dans mon usf Consultation, sur l'onglet Devis, s'il n'y a pas de date de réponse du commercial, le statut est "En attente devis du commercial". J'essaye de faire en sorte que lorsque je saisie une date dans ce textbox, le statut se mette à jour.
J'ai essayé avec différents événements (change, exit...) mais je n'y arrive pas...
Bonjour,
Je reviens à la charge avec mon fichier après une période de boulot bien chargée où j'ai laissé mon projet un peu de côté.
Lorsque j'enregistre mon formulaire de saisie, il y a une vbYesNoCancel qui me demande si je veux envoyer un mail au commercial (mail1). Ça ça fonctionne.
Dans la foulée, je souhaite envoyer un mail au demandeur, sous condition :
- s'il demande un devis, je lui envoie un mail le prévenant qu'on va lui envoyer un devis (mail2)
- s'il ne demande pas de mail, je lui envoie un mail lui demandant de nous contacter pour fixer un rdv (mail3)
Le mail1 pour le commercial se génère bien, ainsi que le mail2 pour le demandeur s'il a demandé un devis. En revanche, je n'arrive pas à générer le mail3.
Je pense que j'ai un problème de condition, mais je ne m'en sors pas...
EnvoyerMail = MsgBox("Bateau enregistré avec succès!" & Chr(10) & "Voulez-vous envoyer un mail au commercial ?", vbYesNoCancel + vbExclamation + vbdefautltbutton1, "Bateau enregistré")
If EnvoyerMail = vbCancel Then Exit Sub ' on quitte la macro
If EnvoyerMail = vbNo Then
[t_Bateaux].Item(n, 1) = Sheets("LISTE").Range("Z2")
Else 'si envoyerMail=OUI on envoie le mail
[t_Bateaux].Item(n, 25) = Date
[t_Bateaux].Item(n, 1) = Sheets("LISTE").Range("Z3")
'Envoi du mail au commercial
Set MaMessagerie = CreateObject("Outlook.Application") 'Création d'un objet Outloook
Set MonMessage = MaMessagerie.CreateItem(0)
MonMessage.Display
MaSignature = MonMessage.htmlbody
With MonMessage
.To = Sheets("LISTE").Range("B18")
.Subject = "Demande devis transport bateau" & " " & tb_Bateau & " - " & tb_Immat & " - " & tb_NomDemandeur & " " & tb_PrenomDemandeur
.htmlbody = "Bonjour," & "<br><br>" & _
"Merci de me transmettre un devis pour le transport du bateau cité en objet et dont les éléments sont en pièces jointes" & "<br><br>" & _
"Nom du demandeur : " & tb_PrenomDemandeur & " " & tb_NomDemandeur & "<br>" & _
"Téléphone du demandeur : " & tb_Telephone & "<br>" & _
"Mail du demandeur : " & tb_Mail & "<br>" & _
"Nom du bateau : " & tb_Bateau & "<br>" & _
"Type du bateau : " & ComboBox_Typologie & "<br>" & _
"Matériaux du bateau : " & ComboBox_Materiaux & "<br>" & _
"Longueur du bateau : " & tb_Longueur & "m" & "<br>" & _
"Largeur du bateau : " & tb_Largeur & "m" & "<br>" & _
"Localisation du bateau : " & tb_AdresseBateau & "<br>" & _
.Display 'afficher le mail avant de l'envoyer sinon placer send pour l'envoyer
End With
End If
'Envoi du mail au demandeur si demande de devis
MsgBox ("Envoi du mail au demandeur")
If SaisieBateau.ComboBox_Devis.Value = "OUI" Then
Set MaMessagerie = CreateObject("Outlook.Application") 'Création d'un objet Outloook
Set MonMessage = MaMessagerie.CreateItem(0)
MonMessage.Display
MaSignature = MonMessage.htmlbody
With MonMessage
.To = tb_Mail
.Subject = "Demande déconstruction bateau" & " " & tb_Bateau & " - " & tb_Immat & " - " & tb_NomDemandeur & " " & tb_PrenomDemandeur
.htmlbody = "Bonjour," & "<br><br>" & _
"Nous avons bien reçu votre demande de déconstruction du bateau cité en objet." & "<br><br>" & _
"Comme vous l'avez indiqué dans votre demande, vous souhaitez faire appel à nos service pour réaliser le transport de votre navire." & "<br><br>" & _
"Notre commercial va se déplacer afin de vérifier l'accessibilité de votre bateau et de définir les conditions d'enlèvement." & "<br>" & _
"Un devis vous sera transmis une fois la situation de vote bateau étudiée." & "<br>" & _
"Pour rappel, le bateau doit être débarrassé de tout élément autre que le matériel de navigation, et les engins pyrotechniques (fusées de détresse, feux à main, fusées parachute...), les bouteilles de gaz et les extincteurs sont interdits." & "<br>" & _
"Dans le cas où votre bateau ne serait pas débarrassé de ces éléments, nous nous verrions dans l'obligation de refuser la livraison de votre bateau et de vous facturer le déplacement." & "<br><br><br>" & _
"A compléter" & "<br>" & _
.Display 'afficher le mail avant de l'envoyer sinon placer send pour l'envoyer
End With
'Envoi du mail au demandeur si pas de devis
Else
Set MaMessagerie = CreateObject("Outlook.Application") 'Création d'un objet Outlook
Set MonMessage = MaMessagerie.CreateItem(0)
MonMessage.Display
MaSignature = MonMessage.htmlbody
With MonMessage
.To = tb_Mail
.Subject = "Demande déconstruction bateau" & " " & tb_Bateau & " - " & tb_Immat & " - " & tb_NomDemandeur & " " & tb_PrenomDemandeur
.htmlbody = "Bonjour," & "<br><br>" & _
"Nous avons bien reçu votre demande de déconstruction du bateau cité en objet." & "<br><br>" & _
"Comme vous l'avez indiqué dans votre demande, vous souhaitez apporter vous-même votre bateau sur notre site." & "<br><br>" & _
"Merci de nous contacter au ########### afin de convenir d'un rendez-vous pour la livraison de votre navire." & "<br><br><br>" & _
"A compléter" & "<br>" & _
.Display 'afficher le mail avant de l'envoyer sinon placer send pour l'envoyer
End With
End If
fin:
MsgBox ("Bateau enregistré avec succès!")
Unload Me
Sheets("LISTE").Range("V1").Value = ""
SaisieBateau.Show
End SubJe vous mets le fichier en pièce jointe.
Merci d'avance pour le coup de main