whitelegend030
Messages postés23Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 1 février 2010
-
25 janv. 2008 à 09:00
whitelegend030
Messages postés23Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 1 février 2010
-
31 janv. 2008 à 09:07
Bonjour,
voila j'ai pas mal chercher sur le forum mais je n'ai rien trouvé qui corresponde à mes besoins.
J'utilise office 2007
Sous outlook je veux creer une macro qui fera ca:
1- clic sur la macro
2- une fenêtre avec un liste de choix apparait
3- je selectionne un choix
4- un mail s'ouvre avec mon sujet rempli et le nom du destinataire correspndant à mon choix
Ce que j'ai réussi à faire:
-ouvrir un mail avec le sujet pré-rempli
ce dont j'ai besoin car mes petites connaissances me permettrons de finir c'est le point 2
après il suffirait de me dire comment interpréter la réponse que renvoie VB suite au choix et avec des "IF" je pourrai faire mes conditions qui selectionnerons automatiquement le destinataire et le collera dans le champs " A" de mon mail.
j'espère avoir expliquer assez clairement ma demande, j'ai tendance à être trop compliqué il parait xD
merci à tous pour les aidees que vous pourrez me fournir
whitelegend030
Messages postés23Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 1 février 2010 25 janv. 2008 à 12:09
Bon je viens de repasser une matinée à gratter sur le forum et toujours rien mais j'ai quelques précisions à donner sur ma demande.
Apparement le forum n'est pas la pour faires des solutions toutes faites mais ce n'est pas ce que je souhaite.
Ce que je voudrais c'est un code qui me fasse un truc dans le genre d'une inputbox mais au lieu de saisir les caractères la box proposerait une liste de choix.
Après pour le reste je pense pouvoir m'en sortir mais cette satanée box avec un menu déroulant ou liste de choix me pose un énorme soucis
tu devrais préciser le problème en ajoutant le code sur lequel du bloque...
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 25 janv. 2008 à 20:45
Salut,
quelques precisions (en vert) pour t'aider dans tes recherches :
1- clic sur la macro
2- une fenêtre avec un liste de choix apparait 'Cela s'appel un UserForm ou Formulaire en francais
3- je selectionne un choix 'ComboBox ou ListBox qui sont des listes deroulantes et que l'on pose dans un UserForm. La principale difference est que la listBox autorise un Choix multiple.
4- un mail s'ouvre avec mon sujet rempli et le nom du destinataire correspndant à mon choix
Plus globalement, ce sont des objets que l'on appel Controls
Bonne recherche
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 25 janv. 2008 à 23:55
À partir d'Excel, voici comment je procéderais, si j'ai bien compris...
Attention au S de Contact (l'item) et ContactS (la collection)
Dim objOL As New Outlook.Application
Dim NmSpace As Outlook.NameSpace
Dim Contacts As MAPIFolder, Contact As Outlook.ContactItem
Set NmSpace = objOL.GetNamespace("MAPI")
'Contacts pointera vers le répertoire des contacts par défaut
Set Contacts = NmSpace.GetDefaultFolder(olFolderContacts)
'Contact va contenir chaque nom de la liste des contacts
For Each Contact In Contacts.Items
'Charger les noms de ton carnet dans la listbox1
Listbox1.AddItem Contact.FullName
Next
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
whitelegend030
Messages postés23Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 1 février 2010 28 janv. 2008 à 08:04
Je vais essayer de faire le plus précis possible avec le code que j'ai déjà fais.
quand je clic sur la macro sous outlook ( je ne programme pas à partir d'excel, directement à partir de vb6) il faut qu'une fenêtre s'ouvre en me proposant de choisir à l'intérieur d'une liste de different sous-traitants.
J'ai avec moi une liste ( excel s'il y a besoin) qui fait le lien entre le nom de l'entreprise de sous-traitance et le nom de la personne qui s'occupe de la relation clientèle, avec cette entreprise, dans mon entreprise.
Une fois le sous-traitant choisi, un mail s'ouvre avec le sujet déja rempli ainsi que le nom de la personne qui s'occupe de ce sous-traitant. Il faudrait également que la macro colle le contenue du presse papier ( Impr.Ecran) dans le corps du message.
Voila l'énoncé... maintenant mon code:
( Je suis sous Office 2007)
Sub Retour_NCR_OA_à_recaler()
' ici c'est l'adresse de mon fichier modèle de mail où le sujet est déja rempli
'"C:\Documents and Settings\lopesc\Application Data\Microsoft\Templates\Retour NCR OA à recaler.oft"
' ici j'ouvre une fenêtre qui me permet de donner le nom d'un sous-traitant mais ce n'est pas ce que je désire, il faut que la box me propose la liste et non de saisir moi même
'choisir le fournisseur
Dim Retour As String
'ici je vais me servir de adresse pour y mettre l'adresse email qui resultera de la box
Dim Adresse As String
Retour = InputBox("De quel Sous-Traitant est le retour ? ", "Choix du Sous-Traitant", "Texte par défaut", 6500, 6500)
'Range("A1") = Retour
If Retour = "" Then Exit Sub
'ici de fais le mail
Dim MonOutl As Outlook.Application, Message As Outlook.MailItem, Destinataire As Recipient
Set MonOutl = New Outlook.Application
'ici j'ouvre mon fichier modèle de mail
Set Message = MonOutl.CreateItemFromTemplate("C:\Documents and Settings\lopesc\Application Data\Microsoft\Templates\Retour NCR OA à recaler.oft")
Set Destinataire = Message.Recipients.Add(Adresse)
Message.Body = "blabla c'est un test"
Destinataire.Type = olTo
Destinataire.Resolve
Message.Display
End Sub
Voila, donc je n'arrive pas à créer un box qui me propose une liste que j'ai et je n'ai pas réussi à coller le presse papier dans le corps du mail, seulement à y mettre du texte.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 28 janv. 2008 à 10:42
À ce que je peux voir, tu ne programmes pas sous VB6 mais sous VBA Outlook..., mais le principe demeure le même, sous Outlook, Excel ou VB6. Comme tu le fais déjà, tu crées une instance d'Outlook et tu utilises les objets disponibles pour créer le message.
Pour la liste de choix, il faudrait savoir où tu stockes ces données. Est-ce un fichier texte, Excel, autre ? Ça ne semble pas être important pour toi, mais la méthode sera différente selon le cas.
L'exemple que je t'ai donné liste tous les contacts déjà entrés dans ton Outlook. Si la liste se situe dans un fichier texte, il s'agit d'ouvrir ce fichier (Open ... For Input... + Line Input) et générer une Listbox qui se trouverait sur un UserForm plutôt que d'utiliser une Inputbox. Si la liste est sous Excel, il te faudra créer une instance d'Excel comme tu le fais avec Outlook, ce qui me semble un peu lourd pour cet exercice, mais qui demeure une possibilité.
Donc, pour pouvoir t'aider efficacement, il faudrait savoir quel type de fichier tu utilises et comment il est monté...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
whitelegend030
Messages postés23Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 1 février 2010 28 janv. 2008 à 12:11
Tout d'abord merci beaucoup de te pencher sur mon affaire MPi.
la liste de mes sous-traitant correspondant aux adresse email des personnes est stockée sous tableau excel à ce jour mais je peux très bien bien la stocker sous la forme que je souhaite.
La solution que je préfèrerais serait de ne pas passer par excel pour que la macro soit la plus rapide possible.
Est-il possible de stocker ces information directement dans la macro ? ou alors sous un fichier type .txt qui ne devrait pas trop ralentir la manip .
J'ai quand même essayer de progresser avec les info qui m'ont été données plus haut, avec les userform etc ... et je dois dire que j'ai appris plein de chose.
J'ai réussi a créer un userform et une combobox à l'intérieur. La où je coince c'est pour remplir la combobox, je ne sais pas ou mettre les codes " combobox.additem..." car où que je les mettenty ca ne change rien. Pour savoir où j'en suis j'ai tout appris par ce lien: http://dj.joss.free.fr/usf.htm
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 28 janv. 2008 à 22:52
Pour que ce soit simple, utilise l'événement Userform_Initialize
Dans cet événement tu pourras charger la combobox avant que l'affichage ne soit effectué.
Pour le fichier qui pourrait être au format txt, il faudrait savoir exactement comment il doit être créé. J'imagine que tu devras avoir le nom du sous-traitant, et sur la même ligne, tu mets le ou les relationnistes. Chaque donnée devrait être séparée par un séparateur (; ou , ou tab ou autre)
S'il n'y a toujours qu'une seule personne par sous-traitant, ça devrait simplifier un peu la chose
ex:
Open TonFichier For Input as #1
Line Input #1, variable
tablo = Split(variable, "séparateur")
'>> tablo(0) va contenir le sous-traitant
'>> tablo(1) va contenir la personne ressource
Close #1
S'il peut y avoir plusieurs personnes, il te faudra faire une boucle pour lire chaque partie de tablo()
en espérant être assez clair...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 28 janv. 2008 à 22:55
Oups, je suis allé un peu vite...
Ça prend une boucle pour lire le fichier...
Open TonFichier For Input as #1
Do Until EOF(1)
Line Input #1, variable
tablo = Split(variable, "séparateur")
'>> tablo(0) va contenir le sous-traitant
'>> tablo(1) va contenir la personne ressource
If Tablo(0) = TextboxDuNomRecherché Then 'par exemple ...
'faire ce qu'il faut...
End If
Loop
Close #1
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
whitelegend030
Messages postés23Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 1 février 2010 29 janv. 2008 à 12:14
Je me suis sur-estimé sur ce projet ... et j'avoue que même avec tes explications je ne m'en sort pas et ce n'est pourtant pas manque d'essayer, j'ai passer au moins 16 h (cumulées) dessus et j'ai vraiment du mal .
Est-il possible que tu me donnes un gros coup de main en me donnant un exemple complet sur lequel je pourrais travailler afin de comprendre et de l'adapter à mes besoin.
Au cas ou je te donne quamd même tout ce dont je dispose et ce que je veux faire au final ( exemple réduit)
Fichier : "C:\test.txt" qui contient des infos selon cette mise en forme
A partir d'outlook je voudrais pouvoir cliquer sur une macro qui :
- me propose une liste( sous forme combox ou autre) avec seuelement le nom des sous-traitants
-à la selection ou en cliquant sur un un bouton " valider" du userform un mail s'ouvre avec:
-en destinataire: l'adresse mail correspondant au Soustraitant
-en sujet : "retour de pièces"
-dans le corps du sujet : que l'impression d'écran que je fait avant de lancer la macro y soit collée
Je sais que ce que je demande n'est pas du tout le principe du forum mais pour faire il faut savoir, et pour savoir il faut apprendre. Quand on me donne des solutions je ne me contente pas de m'en servir, j'essaie de les comprendres et de les réutiliser sur d'autres méthodes.
Je salue au passage votre altruisme et vos talent de programmateur.
Ca fait un peu leche cul mais ce n'est pas le but.
En espérant que ce que je demande ne soit pas trop.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 janv. 2008 à 23:48
Voici un début...
Insère un Module et inscris ceci
Option Explicit
Sub MaMacro()
UserForm1.Show
End Sub
Maintenant insère un Userform et place un Combobox
Et inscris ce code
Option Explicit
Private Sub ComboBox1_Click()
Dim FF As Integer, strTemp As String, Tablo() As String
FF = FreeFile
Open "C:\Test.txt" For Input As #FF
Do Until EOF(FF)
Line Input #FF, strTemp
Tablo = Split(strTemp, ";")
If Tablo(0) = ComboBox1 Then
CréerMail Tablo(1)
Exit Do
End If
Loop
Close #FF
End Sub
Private Sub UserForm_Initialize()
Dim FF As Integer, strTemp As String, Tablo() As String
FF = FreeFile
Open "C:\Test.txt" For Input As #FF
Do Until EOF(FF)
Line Input #FF, strTemp
If InStr(1, strTemp, ";") > 0 Then
Tablo = Split(strTemp, ";")
ComboBox1.AddItem Tablo(0)
End If
Loop
Close #FF
End Sub
Sub CréerMail(Nom As String)
Dim objOutlook As New Outlook.Application 'Nouvelle session Outlook
Dim nmSpace As Outlook.NameSpace
Dim MonMail As MailItem
'Initialisation des objets Outlook nécessaires
Set nmSpace = objOutlook.GetNamespace("MAPI")
Set MonMail = objOutlook.CreateItem(0) 'C'est le message qu'on veut créer
'Remplissage du message
MonMail.Subject = "retour de pièces"
MonMail.To = Nom
Unload UserForm1 'Outlook ne veut pas envoyer si le Userform est affiché
MonMail.Display 'ou Send si tu ne veux pas le voir s'afficher
'éliminer les objets créés de la mémoire
Set MonMail = Nothing
Set nmSpace = Nothing
Set objOutlook = Nothing
End Sub
Pour ce qui est de l'impression d'écran, je n'ai pas d'idée pour l'instant autre que de passer par les API's et je te conseille d'ouvrir un autre Post pour ce sujet spécifique...
Et n'oublie pas qu'il y a un forum dédié à VBA (Office), voir ma signature...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 janv. 2008 à 23:56
Je me rends compte que j'ai oublié pas mal de commentaires...
FF est une variable qui sert avec FreeFile à trouver le premier numéro libre pour ouvrir un fichier (1 à 256, si je ne me trompe pas...)
Split sert à séparer une ligne de ton fichier selon le séparateur, et retourne les valeurs séparées dans un tableau. Ici, j'ai utilisé le point-virgule comme séparateur comme dans ton exemple.
On aurait pu procéder différemment et charger un tableau en même temps qu'on chargeait le combobox. Ça aurait éviter de rouvrir le fichier une deuxième fois... mais bon, ce n'est pas très long ce genre de processus... et un presque copier/coller fait très bien l'affaire.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI