Formulaire outlook
Bonjour à tous,
Voilà vu que mon patron aime se compliquer la vie, il m'a demandé de lui pondre un formulaire Outlook sous Excel ( oui oui parfaitement TEXTO ! ).
Bon alors j'ai fait tout la mise en forme, seulement je suis une quiche en VBA alors je n'ai absolument aucune idée de comment dire a quel bouton qui fait quoi.
Ci joint une capture d'écran qui décris le comportement que devrais adopter le formulaire
En soit c'est très simple, le but c'est de renvoyer le formulaire dans une pièce jointe au format .txt de manière la plus moche et illisible possible
Sous la forme :
Intitulé1 : renseignement1
Intitulé2 : renseignement2 etc.
J'ai déjà une base d'un autre formulaire existant que j'ai un peu purgé histoire de ne garder que ce qui nous concernait ( et anonymisé aussi)
Public piecesjointes(5) As String
Public NbPiecesjointes As Integer
Public Sub GetFilePath()
Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
Fileselected = .SelectedItems(1)
piecesjointes(NbPiecesjointes) = Fileselected
NbPiecesjointes = NbPiecesjointes + 1
End With
'MsgBox = FileSelected
End Sub
Public Function creation_ficher(ByRef TableaudeDonnees As Variant, TypeDeFichier As String, TableaudePiecesJointes As Variant) As Boolean
Dim aOutlook As Object
Dim aEmail As Object
Dim aCurrentUser As Object
Dim rngeAddresses As Range, rngeCell As Range, strRecipients As String
On Error GoTo err
creation_ficher = True
Dim intFic As Integer
Dim NomFichier As String
creation_dossier
intFic = FreeFile
NomFichier = "D:\EnvoiDFC\" & TypeDeFichier & Format(Now, "YYYYMMDDHHMSS") & ".txt"
Set aOutlook = CreateObject("Outlook.Application")
Set aEmail = aOutlook.CreateItem(0)
Open NomFichier For Output As intFic
'
Print #intFic, "Envoyé par : " & aOutlook.Session.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress
Print #intFic, "Type de demande : " & TypeDeFichier
For i = 0 To UBound(TableaudeDonnees, 1)
Print #intFic, TableaudeDonnees(i, 0) & ":" & TableaudeDonnees(i, 1)
Next i
'
Close intFic
aEmail.Importance = 2
'Set Subject
aEmail.Subject = "Ceci est un test, vous ne devriez pas le recevoir, si tel était le cas, ignorez."
'Set Body for mail
aEmail.Body = "Toute mes excuses ."
'Set attachment
aEmail.attachments.Add NomFichier
' si piece jointes supplementaires
For i = 0 To NbPiecesjointes
If TableaudePiecesJointes(i) <> "" Then
lcnompiece = TableaudePiecesJointes(i)
aEmail.attachments.Add lcnompiece
End If
Next i
'Set Recipient
aEmail.To = "watewmark.scarlett@live.fr" '<==ça c'est mon adresse "anonyme" ..'
'or send one off to 1 person use this static code
'aEmail.Recipients.Add "E-mail.address-here@ntlworld.com"
'Send Mail
'Debug.Print aOutlook.Session.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress
'Debug.Print aOutlook.Session.GetExchangeUser.PrimarySmtpAddress
aEmail.Send
MsgBox "Formulaire envoyé"
NbPiecesjointes = 0
Exit Function
err:
MsgBox "probleme envoi formulaire"
creation_ficher = False
End Function
Public Sub creation_dossier()
On Error GoTo err
Dim FSO As Object, FileObject As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
'Accède au dossier
If FSO.FolderExists("D:\EnvoiDFC") Then
' Set oFld = oFSO.GetFolder("D:\EnvoiDFC")
Else
Set oFld = FSO.CreateFolder("D:\EnvoiDFC")
End If
fin:
Exit Sub
err:
Select Case err.Number
Case 58: MsgBox "Le dossier existe déjà"
Case 76: MsgBox "Chemin incorrect"
Case Else: MsgBox "Erreur inconnue"
End Select
Resume fin
End Sub
Mais ce sera plus clair avec le fichier d'ouvert je suppose
Enfin voilà, si vous sauriez m'aider ça serais super méga trop génial, et puis on va dire que c'est un entrainement de manière a ce que je meurt pas sans connaitre VBA
Je vous remercie d'avance !
Re,
Peut-être trop de demande a la fois ? on va faire par étape,
Déjà ce serais bien que quand je clique sur mon bouton il m'affiche mon UserForm (histoire que je puisse tester mon formulaire
J'ai mis ça dans la feuille qui contient le bouton mais pour le moment il m'ouvre VBA et me renvoie a ce code et ne m'afiche pas l'objet
Private Sub CommandButton1_Click()
FormulaireOutlook.Show
End Sub
j'ai vérifié les noms du bouton et de l'UserForm donc je vois pas trop ce qui coince
(oui oui on part de loin
Bonjour,
chez moi le bouton fonctionne très bien.
Le formulaire apparaît.
il sera nécessaire de redimensionner les champs, car le texte n'apparaît pas en entier.
Bonjour,
Merci pour cette réponse, le bouton ne fonctionnait définitivement pas sur la version que j'avais, et en re-téléchargeant le fichier que j'ai uploadé, là ça fonctionne .. j'ai pas du comprendre un truc mais bon déjà je peux travailler.
L'étape suivante ça va être de dire aux champs quel format ils doivent contenir, le nombre de caractère max, qui est dépendant de qui, etc.
Je devrais pouvoir me débrouiller avec les tutos mais je ne suis pas contre un peu d'aide, ne serais-ce qu'une mise en forme générale que je puisse modifier a ma sauce par la suite, ça m'aiderait pas mal
Bonjour,
j'ai redimensionné tous les champs pour une meilleure lisibilité.
Mais que voulez-vous faire exactement avec ce formulaire?
Avec le fichier, c'est mieux
Re,
Merci c'est déjà ça de fait,
Dans mon premier message j'ai décris les comportement que je souhaites pour chaque champs dans une image avec des légende ( c'est plus clair je trouve)
Le but final c'est de renvoyer le résultat de ce formulaire dans un mail dans un .txt en pièce jointe de ce mail de la forme (voir pj)
avec " Qui " en objet et "Pour qui" le destinataire.