envoi usf par mail

armelle1303

XLDnaute Junior
bonsoir le forum
Voilà j'ai de nouveau besoin de vos lumières
remplir un usf et l'envoyer à un destinataire pour qu'il le complète à nouveau et vienne mettre à jour la feuille EXcel avec les données saisies

explication :
martin ouvre un userform : cet usf permet à martin de remplir plusieurs rubriques (txt, combobox..) afin d'enregistrer une demande d'amélioration (produit, machine...) sur la feuille du classeur (ça c'est ok)
mais sur ce formulaire il y a une 2ème partie qui doit être complétée par le destinataire du mail.

Donc martin renseigne l'usf et en cliquant sur le bouton OK envoie ces infos par mail ( si possible envoie de l'usf).

j'ai déjà utilisé la méthode avec CDO de ron de Bruin trouvée sur ce forum et c'est nickel pour les mails avec PJ ou sans.
Mais comment faire pour envoyer l'usf et qu'une autre personne le complète ?
Est ce possible?
ou alors, pour contourner le problème, j'envoie un mail disant "martin vous a envoyé une demande d'amélioration n° X, veuillez aller la consulter "
et là je sais aller la rechercher par son numéro, rouvrir le formulaire correspondant et le compléter et sauvegarder les nouvelles données?

Voilà si quelqu'un a des idées quant à la façon de procéder....

Autre question : vu que j'ai 2 parties de l'usf à remplir par 2 personnes différentes est il possible de n'autoriser l'accès qu'à une ou l'autre partie? en mettant dans des frames? comment?


Merci à tous pour vos conseils
Note : j'ai parcouru une bonne partie du forum mais je n'ai pas trouvé la réponse souhaitée (soit pas de réponse soit le formulaire est en fait une feuille excel et pas un usf)
 

pedrag31

XLDnaute Occasionnel
Re : envoi usf par mail

Bonjour Armelle1303, Bonjour le forum,

Il y a pas de choses possibles mais il faudrait que tu precises toutes fois qques éléments...

1. Est-ce que tu prévois d'envoyer un classeur Excel par email?

Si oui, l'USF qui sera dans le fichier Excel peut donc être envoyé.

2. Est-ce que ton USF va chercher ses données dans une sorte de Bases De Donnees (Tableau Excel) dans ton fichier?

Si oui, après que Martin ait rempli l'USF, il sauve le fichier Excel, puis MaJ automatique de la BDD via du code (Tableau Excel) puis envoi par email avec les données de Martin dedans...
Ensuite a l'ouverture, si les données de Martin sont bien renseignées, celles-ci sont chargées a l'ouverture de l'USF par le nouvel utilisateur...


3. Oui on peut limiter l'acces mais cela sous-entends l'utilisation de passwords. Est ce au programme?

Si oui, on peut jouer sur l’état "Enable/Disable" de tes Frames et les activer ou pas avec un Password (toujours les meme a moins qu'on aille dans le code)

Bonne journée, :)
 

Pièces jointes

  • FramePasswordExemple.xls
    32.5 KB · Affichages: 73
Dernière édition:

armelle1303

XLDnaute Junior
Re : envoi usf par mail

bonjour le forum, bonjour Pedrag31

tout d'abord merci pour ta réponse
au point 1 : en fait c'est ce que je voulais savoir c'est à dire si il fallait envoyer le classeur par mail ou si c'était possible de n'envoyer que l'usf.

point 2
Si oui, après que Martin ait rempli l'USF, il sauve le fichier Excel, puis MaJ automatique de la BDD via du code (Tableau Excel) puis envoi par email avec les données de Martin dedans...
Ensuite a l'ouverture, si les données de Martin sont bien renseignées, celles-ci sont chargées a l'ouverture de l'USF par le nouvel utilisateur...
oui mes données de l'usf viennent compléter une feuille excel qui s'alimente ligne après ligne

mais il faut que j'arrive à mettre le code pour : comment le destinataire sait il quelle fiche le concerne et donc doit ouvrir?

point 3 : ok pour l'info c'est ce que je recherchai

je fais des essais pour tout cela ce soir et je poste mon classeur en PJ

merci
 

pedrag31

XLDnaute Occasionnel
Re : envoi usf par mail

Re Armelle1303,

La PJ n'a pas du passer. Essaie peut être de re-poster avec une PJ compressée avec WinZip...

mais il faut que j'arrive à mettre le code pour : comment le destinataire sait il quelle fiche le concerne et donc doit ouvrir?

En ce qui concerne ta question sur les données que l'utilisateur (autre que Martin) doit traiter, je te propose d'utiliser une colonne "marqueur" ou tu mets un "x" pour que le code fasse traiter toutes les lignes de données marquées. Comme ça, Martin renseigne et "marque" les sujets a traiter, et envoie a l'utilisateur A. Ensuite Martin renseigne et "marque" les autres sujets a traiter et envoies a l'utilisateur B, etc... Chacun reçoit le fichier avec sa liste de taches en qque sorte...

Si en plus, on cache la Feuille avec du code VBA (Worksheets("Sheet1").Visible = -1 ou =xlVeryHidden), elle ne sera accessible que depuis VBA et ne sera donc modifiable qu'a partir de ton USF pour les utilisateurs "normaux".

Mais pour aller plus loin, il va falloir ton fichier...

Bonne journée, :)
 

armelle1303

XLDnaute Junior
Re : envoi usf par mail

Bonsoir Pedrag 31
en fait on ne s'était pas compris : je devais retravailler le fichier avant de le poster.
c'est chose faite mais il reste encore des pb

1/ pour les password sur frame : super c'est fait et ça marche ; me reste à améliorer si je veux faire varier le mdp en fonction du destinataire valideur pur le frame1 ; je pense que cela doit être ok en utilisant des variables ; je le ferai plus tard

2/ envoi de mail
je reçois bien les mails différents avec les 3 boutons utilisés
je ne reçois pas de PJ normal car je n'en ai pas mis : je ne sais pas quel code mettre
en plus je pense que si j'envoie le classeur en PJ il va y avoir des problèmes de mise à jour.
je m'explique :
si A envoie la PJ à B et que B la met à jour, le fichier original ne sera pas mis à jour
je pense qu'il faut peut être mieux que j'envoie dans le corps du texte le N° de la fiche " vous avez reçu la fiche n° XX à valider" (en récupérant le n° de la textbox dans une variable) éventuellement avec un lien hypertexte pour ouvrir directement le fichier original.
ensuite B via le bouton recherche et le n° affiche le formulaire qui se charge des 1ères infos saisies et en plus je récupère le n° dans une variable pour aller se positionner sur la ligne concernée.
sinon je n'arrive pas à la récupérer et les nouvelles données saisies ne se mettent pas au bon endroit.

tu pourras voir que dans le code des boutons "valider et envoyer au pilote" et "valider l'avancement et envoi au demandeur" cela ne fonctionne pas car je commence à aller me placer dans la cellule concernée (j'ai indiqué la colonne) mais je ne connais pas la ligne (j'ai mis une var i mais je ne sais pas comment l'alimenter hormis la méthode que je décris ci dessus).

je n'ai pas compris ce que tu voulais faire avec un "marqueur"

en fait je pensai pouvoir éviter ces lignes de codes et manip des utilisateurs pour aller rechercher les fiches mais je crois que ce n'est pas trop possible (dans l'état de mes connaissances en vba).
a moins que ... mais je crois que ce que je voulais faire se rapproche d'un outil de collaboration et là c'est au dessus de mes capacités.

du coup il ne faut pas que je rende ma feuille excel visible ou alors seulement la 1 (si c'est possible) mias merci pour les infos je range ça , cela pourra toujours me servir

voilà alors que pense tu de ma démarche : trop compliquée? (pour aller rechercher la fiche et se positionner j'ai déja fait ce type de code donc je pense pouvoir le refaire)

attention si tu veux tester les envois de mail : pour le 1er bouton, il faut cocher que le dest1 ; et à chaque fois c'est mon mail perso qui est entré et mon serveur smtp pour faire les essais)

en revanche une autre question
pour l'envoi de mail j'ai mis le code suivant en cas d'erreur d'envoi (erreur d'adresse par exemple ou autre si cela existe)
.Send

If Err Then
MsgBox "Le message n'a pas pu être expédié."
End If
On Error GoTo 0

mais si je teste avec une mauvaise adresse cela ne marche pas et passe de if à end if. il ne faut pas employer "Err"? cela m'envoie quand même un message d'erreur sur ma boite mail


merci encore pour ton aide, j'espère que mes explications seront claires bien que le discours soit long!!!
 

Pièces jointes

  • suivi des actions forum.zip
    37.3 KB · Affichages: 57

pedrag31

XLDnaute Occasionnel
Re : envoi usf par mail

Bonjour Armelle1303, Bonjour le forum,

Bon, j'ai eut un peu peur :eek: quand j'ai vu la complexité de ton USF mais comme il n'y a pas encore trop de code derrière, ça reste compréhensible... Pour commencer, je te propose d'aborder ton USF "fonction par fonction" en commençant par ce qui est essentiel (fonction principale) et en allant vers ce qui ne l'est pas (gadjets VBA). Donc je préfèrerai qu'on simplifie au maximum ton USF pour ce concentrer sur ce qui est important: le code de la fonction principale. Ensuite, tu pourras complexifier tant que tu le souhaites... :)

Je regarde ton fichier dans le detail quand j'ai un peu de temps et te poste du code un peu plus tard.
Qques réponses dans le désordre pour commencer:

1. Un marqueur serait une colonne avec des "x". On parcours chaque ligne de la colonne et quand la cellule = "x" alors on traite la ligne... Je vois qu'il y a déjà des noms de pilotes dans ta BDD, on peut faire avec cela c'est aussi simple pour identifier les noms des pilotes et donc les fiches a traiter. On devra peut-etre aussi rajouter un statut "Traité" qque part...

2. Utilises-tu Outlook? Si oui, le code serait grandement plus simple... Je ne connais pas bien CDO pour tout dire. C'est sans doute l'occasion pour moi de m'y mettre tu vas dire :rolleyes: je vais essayer de regarder...

3. "Err" est une variable qui contient le dernier numéro d'erreur. Tu dois tester "If Err=414 Then" ou "If Err<>0 Then" pour te servir de cette variable. Tu as tous les nums d'erreur dans l'aide VBA (F1).

4. Le "On Error GoTo 0" ne sert a rien s'il n'est pas precede qque part de "On Error Goto XXX" ou d'un "On Error Resume Next".
"On Error Goto XXX": saute a la ligne "XXX:" s'il y a une erreur
"On Error Resume Next" : ignore la ligne en cours et passe a la ligne suivante s'il y a une erreur.

Code:
Sub ExempleError()
Err = 0 [COLOR="Green"]'initialisation a zero[/COLOR]

[COLOR="Green"]'Si le code rencontre une erreur, il ignore la ligne avec l'erreur et "saute" a la ligne >> Suivant:[/COLOR]
On Error GoTo suivant

[COLOR="Green"]'Code pour ouvrir un fichier Excel, activer la "FeuilleCible", et ecrire 3 dans A1[/COLOR]
Workbooks.Open "C:\dossier\fichier.xls"
Workbooks("fichier.xls").Worksheets("FeuilleCible").Activate
ActiveWorksheets.Range("a1").Value = 3

[COLOR="Green"]'Le code saute ici si il y a une erreur
'Si pas d'erreur, le test If Err <> 0 est faux donc pas de message[/COLOR]
suivant:
If Err <> 0 Then MsgBox "Probleme avec le fichier Excel", vbCritical
[COLOR="Green"]
'ici on retablit la gestion et l'alerte des erreurs[/COLOR]
On Error GoTo 0

End Sub

Voir l'aide VBA pour les details (F1).

5. La feuille "invisible" c'est pour stocker tes paramètres, les données importantes pour ton programme et qui ne doivent pas être accessibles par les utilisateurs. Tu peux bien sur garder ta BDD publique mais tu auras surement besoin de qques paramètres ou tu ne veux que personne mette son nez...:)

Allez j'essaie de regarder le détail dans la journée et de te poster un fichier avec du code.

Bonne journée, :)
 
Dernière édition:

pedrag31

XLDnaute Occasionnel
Re : envoi usf par mail

Bonjour Armelle1303, Bonjour le forum,

Après une visite sur le site de Ron de Bruin, l’étude de qques uns de ses codes et qques tests, CDO est en effet une méthode très sympa pour envoyer des emails en boucle ou faire du publipostage...

Mais CDO ne peux pas envoyer le classeur Excel ouvert... Alors qu'Outlook (ou autre) peut le faire...

1. Avec CDO, deux étapes:
Il faut prévoir un USF dans le fichier puis Enregistre et ferme le classeur "Suivi des Actions.xls".
Et depuis un AddIn Excel par exemple (ou depuis un autre fichier Excel si tu veux), lancer l'envoi du fichier Excel "Suivi des Actions.xls" en PJ aux destinataires voulus.

2. Avec Outlook (ou autre), pas de pb, le classeur Excel ouvert peut être envoyé avec la méthode SendMail directement.
SendMail (fonction intégrée d'Excel) utilise le logiciel de messagerie par défaut installé sur le PC et reconnu par Windows. Ça peut être par exemple Outlook 2003, Outlook Express, Thunderbird, Incredimail, etc...

A toi de décider quelle méthode utiliser. A partir de la, on va pouvoir avancer rapidement.

Essaies également de définir la liste d'actions (et l'ordre) que chaque utilisateur doit faire. Ça va aider a structurer le code...

Bonne journée, :)
 

armelle1303

XLDnaute Junior
Re : envoi usf par mail

bonjour Pegrad31, le forum

effectivement j'ai essayé l'envoi de mail avec CDO mais il ne veut pas envoyer le fichier ouvert.
je vais essayer avec send mail (le temps que je trouve des bouts de code) ; au boulot , nous utilisons open exchange , il faudra que je teste si ça fonctionne.

je fais aussi des essais pour le Err.

liste des actions :
utilisateur A :
ouvre une fiche via le formulaire et renseigne la nature de sa demande (source, machine ou poste concerné, nature du problème, proposition d'actions et son choix de pilote)
ensuite il l'envoie au responsable concerné pour validation de la demande (qui peut être différent du pilote d'où le second formulaire qui s'ouvre pour sélectionner le destinataire du mail)

B qui reçoit la demande la valide ou non , désigne un pilote et détermine un délai d'achèvement. B l'envoie au pilote désigné pour qu'il en prenne connaissance et réalise l'action.

C (le pilote), après en avoir pris connaissance, viendra rechercher cette fiche ultérieurement pour mettre à jour l'avancement. A chaque mise à jour, il l'envoie au demandeur pour qu'il soit informé de l'avancement de l'action

il n' y a pas besoin de réponse instantanée entre chaque étape.

je vais essayer d'avancer un peu ce soir.
si j'ai suffisamment avancé je t'envoie les dernières modifs.
A+
 

armelle1303

XLDnaute Junior
Re : envoi usf par mail

Re

effectivement c'est très simple avec sendmail

mais j'ai trouvé une FAQ très intéressante :
FAQ MS-Excel


avec un des exemples j'arrive à envoyer la feuille active et seulement celle ci avec la méthode CDO. en revanche toujours pas réussi pour envoyer l'usf actif.
je continue mes recherches

et je bloque toujours sur comment faire apparaitre la fiche concernée, le renseigner et mettre le fichier original à jour.

A+
 

pedrag31

XLDnaute Occasionnel
Re : envoi usf par mail

Re Armelle1303,

Bon, très bien, je vois que ton projet avance a bon rythme :).

avec un des exemples j'arrive à envoyer la feuille active et seulement celle ci avec la méthode CDO. en revanche toujours pas réussi pour envoyer l'usf actif.

Rappelle toi que tu ne peux envoyer ton USF (et le code VBA qui le pilote) que si tu envoies le classeur entier...
Envoyer "l'USF actif" en temps que tel est impossible. Soit tu envoies une copie d’écran de ton USF actif (mouais, sans grande utilité tu vas dire :rolleyes:) soit tu envoies le fichier entier et l'utilisateur suivant ré-active l'USF a son tour en ouvrant ton fichier ou cliquant sur un bouton.

Sinon, si tous les utilisateurs (A,B,C) ont accès a un même réseau (dans la même entreprise donc...), tu pourrais n'envoyer qu'une "notification de tache" par émail avec un lien hypertexte vers le fichier "suivi des actions.xls" du réseau... Ensuite, a l'ouverture l'utilisateur s'identifie (login+password par exple) et traite sa liste de taches... Cette solution est beaucoup plus simple car toutes les données restent dans un seul fichier. Par contre, le "multi- accès" (plusieurs utilisateurs en même temps) est impossible.

A crée la fiche (avec ses données etc..)
A sélectionne le pilote C
A sélectionne le responsable B
A envoie au responsable B

B valide la (ou les) fiche(s) (si fiche non validée, fin de procédure...)
B valide ou modifie les actions
B valide ou modifie le pilote C (si modifie le choix de C, peut être notification vers responsable B2?)
B envoie la fiche au pilote C (copie A et B2???)

C revoit sa liste de fiches
C traite ses fiches
C renvoie régulièrement des mises a jour a A et B

Le plus gros problème que je vois dans ton projet est la gestion des données. Si on envoie des fichiers Excel par mail, il faut un fichier par tache. Impossible de faire "circuler efficacement" un seul fichier entre plusieurs utilisateurs (y'en aura tjs un qui va travailler sur la copie qu'il a en main et non pas sur la dernière MaJ). En plus, il faudrait aussi prévoir un fichier "maitre" avec le listing des taches...

Si utilisation en réseau, pas de probleme pour les MaJ car un seul fichier donc toujours a jour. Mais alors un seul accès a la fois est possible (plusieurs utilisateurs en "read/write" sur le même fichier est impossible).

On touche ici du doigt la limite d'Excel et il faudra peut être envisager du Access...

Bonne journée, :)
 

armelle1303

XLDnaute Junior
Re : envoi usf par mail

bonjour Pedrag, le forum
mon fichier est effectivement en réseau
je vais donc me rabattre sur la solution d'envoyer une notification de demande de validation, d'action validée et de suivi selon le cas en récupérant le N° de la fiche concernée et en l'incorporant dans le corps du message. C'est le + simple mais cela demande plus de code à réaliser m'enfin le but est d'y arriver quelque soit le chemin!

Pour les problèmes d'accès j'ai déjà fait une appli qui en rusant un peu permet de travailler "presque " en réseau : j'ai un classeur qui sert uniquement de base de données.
J'ai un autre classeur où j'ai mon usf et lorsque je veux aller compléter la base je vérifie si le fichier est déjà ouvert
si oui, j'affiche un message d'attente et avec un timer je recommence le test jusqu'à ce que le fichier de la base soit fermé.
Cela complexifie encore le code mais c'est mieux pour les utilisateurs.
Cela nécessite aussi d'avoir un fichier (qui contient l'usf) par utilisateur potentiel sinon cela décale juste le problème. C'est un peu lourd quand il y a une mise à jour à faire mais c'est une pirouette.

je tiendrai au courant le forum lorsque j'aurai avancé plus mais cela ne sera pas pour tout de suite car je vais manquer de temps ces jours prochains.

en attendant, je prends tout bon conseil

A+
 

Discussions similaires

Réponses
5
Affichages
332

Statistiques des forums

Discussions
311 727
Messages
2 081 962
Membres
101 852
dernier inscrit
dthi16088