Envoi ActiveSheet Excel en pdf via e-mail auto Thunder

re bonjour,

à tester,

Sub Clôturer()
Dim sh1 As Worksheet, sh2 As Worksheet, lig As Long, sourc, dest, i As Long
Set sh1 = Sheets("Demandes reçues")
Set sh2 = Sheets("Demande clôturée")

'test
lign = 25

sourc = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "N", "P", "T")
dest = Array("B47", "C47", "C24", "C26", "G26", "D8", "C16", "D18", "C20", "D22", "D12", "C33", "C16", "C10", "B36")

For i = LBound(sourc) To UBound(sourc)
 sh2.Range(dest(i)).Value = sh1.Range(sourc(i) & lign).Value

 Select Case sourc(i)
  Case "C":
    Select Case sh1.Range(sourc(i) & lign).Value
      Case 1: sh2.Range(dest(i)).Value = "Routine (U3)"
      Case 2: sh2.Range(dest(i)).Value = "Urgence (U2)"
      Case 3: sh2.Range(dest(i)).Value = "Urgence critique (U1)"
    End Select
   Case "D":
    Select Case sh1.Range(sourc(i) & lign).Value
      Case 1: sh2.Range(dest(i)).Value = "Non-dangereux"
      Case 2: sh2.Range(dest(i)).Value = "Dangereux"
      Case 3: sh2.Range(dest(i)).Value = "Très dangereux"
    End Select
    Case "E":
    Select Case sh1.Range(sourc(i) & lign).Value
      Case 1: sh2.Range(dest(i)).Value = "Non-bloquant"
      Case 2: sh2.Range(dest(i)).Value = "Bloquant"
      Case 3: sh2.Range(dest(i)).Value = "Très bloquant"
    End Select
 End Select
Next

End Sub

Bonsoir SabV,

Je viens de tester votre code en enlevant la ligne que vous aviez gardé en test afin de remettre la selection ligne avec cellule active...

C'était presque tout bon...j'ai juste réinversé les "valeurs" que vous aviez inversées (pas grave ^^) entre les 1 et les 3...des 3 cases

Les 2 étaient conformes...

Voici donc le code fonctionnel pour le report "C" "D" "E":

Sub Clôturer()
Dim sh1 As Worksheet, sh2 As Worksheet, lign As Long, sourc, dest, i As Long
Set sh1 = Sheets("Demandes reçues")
Set sh2 = Sheets("Demande clôturée")

lign = ActiveCell.Row
sourc = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "N", "P", "Q", "R", "S", "T", "U", "W", "X", "Y")
dest = Array("B47", "C47", "C24", "C26", "G26", "D8", "C16", "D18", "C20", "D22", "D12", "C33", "C16", "C10", "H12", "H14", "D14", "B36", "F47", "E49", "B53", "G49")

For i = LBound(sourc) To UBound(sourc)
 sh2.Range(dest(i)).Value = sh1.Range(sourc(i) & lign).Value

Select Case sourc(i)
  Case "C":
    Select Case sh1.Range(sourc(i) & lign).Value
      Case 1: sh2.Range(dest(i)).Value = "Urgence critique (U1)"
      Case 2: sh2.Range(dest(i)).Value = "Urgence (U2)"
      Case 3: sh2.Range(dest(i)).Value = "Routine (U3)"
    End Select
   Case "D":
    Select Case sh1.Range(sourc(i) & lign).Value
      Case 1: sh2.Range(dest(i)).Value = "Très dangereux"
      Case 2: sh2.Range(dest(i)).Value = "Dangereux"
      Case 3: sh2.Range(dest(i)).Value = "Non-dangereux"
    End Select
    Case "E":
    Select Case sh1.Range(sourc(i) & lign).Value
      Case 1: sh2.Range(dest(i)).Value = "Très bloquant"
      Case 2: sh2.Range(dest(i)).Value = "Bloquant"
      Case 3: sh2.Range(dest(i)).Value = "Non-bloquant"
    End Select
 End Select
Next

End Sub

En revanche, je viens de voir que la valeur de la colonne "H" , était autant ré-impacté en "D18" que en "D28"...

Vous auriez une idée afin qu'il puisse m'impacter la valeur de "H" sur ces 2 cellules en même temps...car j'ai essayé avec "D18:D28"...j'ai fait un carnage...lol

En parallèle , je suis en train de finaliser (enfin ) la toute dernière macro (module 4) aussi de la sheet "Demande clôturée" afin de renvoyer au demandeur sa demande remplie et terminée...mais c'est là que ça se corse...car il faudrait que le destinataire du mail (adresse) soit recherché en fonction des informations de la case D28 "Demande clôturée" (qui ne se remplit pas pour le moment...grrr) et aller chercher l'adresse mail correspondant au nom et adresse mail mentionnés dans sheet "Table des matières"; adresses mail référencées en colonne "G" de cette feuil et noms en colonne "D" de cette même feuille...

Et après, fini ^^ du moins je l'espère...

Et en grande majorité grâce à vous et à votre aide précieuse.

Je vous fait parvenir la dernière mouture du fichier concerné avec code à jour

Re-bonsoir,

Car via outlook, pour effectuer la recherche de l'adresse de messagerie, j'avais trouvé...mais malheureusement comme la difficulté est préférable à la simplicité par mon administrateur réseau, j'ai droit à Thunderbird, d'où la difficulté de l'exercice

En vous remerciant pour votre aide et votre compréhension.

Solution trouvée pour report cellule en D18 et D28...comme un boulet j'avais mis 2 points alors qu'il suffisait d'insérer une virgule...

Bon, il me reste plus que ce pb de destinataires à trouver en fonction du nom, et on y est...

re...

à tester,

quoi = Sheets("Demande clôturée").Range("D18").Value
With Sheets("Table des matières")
 tTo = Application.Index(.Range("G:G"), Application.Match(quoi, .Range("D:D"), 0))
End With

Bonjour SabV

Merci pour votre réponse pour le bout de code à tester.

En revanche, je l'insère où exactement/à quel endroit/niveau dans le code du module 4?

Merci d'avance

Vous disiez: il me reste plus que ce pb de destinataires à trouver en fonction du nom,

le code sert exactement à faire ça,

quoi = Sheets("Demande clôturée").Range("D18").Value
With Sheets("Table des matières")
 tTo = Application.Index(.Range("G:G"), Application.Match(quoi, .Range("D:D"), 0))
End With

ce code défini la variable tTo utiliser dans votre macro d'envoi de mail

en fonction du nom inscrit dans la cellule D18 de l'onglet "Demande clôturée"

et donc effectivement ce bout de code devrait être inséré dans la macro

Private Sub Fin_Mail(sRep As String, sNomFic As String)

en remplacement de la ligne

tTo = "xxxxxxxxx@xxxxxxxx.fr"

Bonjour SabV,

Merci pour votre réponse.

Je fais la modif du code et je teste cela dans la matinée sur Poste messagerie Thunderbird.

Je vous ferai remonter les résultats dans la journée.

En revanche sauriez-vous SVP comment je peux éventuellement activer l'accusé de réception et l'accusé de lecture pour macro envoi automatique du mail?

En vous remerciant fortement à nouveau pour tous vos retours et aide précieuse.

Bonsoir SabV

J'ai testé le code et la totalité de mes feuilles et cellules...

Tout est quasi fonctionnel...sauf 2 points de détail relevés

1)Je suis juste embêté pour ma cellule "E49" de "demande clôturée" qui me pose pb.

J'ai bien le report de la valeur de mon quota horaire souhaitée de la ligne sélectionnée en colonne "H" de la feuille de "Demandes reçues".

La valeur se reporte mais ne se transforme pas en heure (exemple: valeur "2", je souhaiterai voir afficher 02:00 (hh:mn); et non pas 48:00 comme cela me marque maintenant).

2)Je suis embêté aussi pour la macro du module 4 (Fin_Mail_TB) pour laquelle vous m’aviez déjà apporté une modif qui apporte une + valu notable concernant le mail au demandeur...car j'ai voulu réadapter votre proposition de code en "tTo" sur le "tCC", car il peut arriver qu'un demandeur fasse une demande pour une tierce personne qui sera identifiée en case "G28" de la "demande à clôturée" et qui rechercherait l'adresse mail par le même moyen que pour le destinataire initial (tTo)...

Malheureusement, si je fais un copier coller de votre bout de code en remplaçant l'identif de la case dans le code; si cette case "G28" n'a pas nécessité d'être renseignée (donc vide); je me retrouve avec une erreur de script...puisque le code ne trouve apparemment pas de valeur a traiter...donc échec exécution complète de ma macro.

Voilà, ça c'est pour les 2"pb" identifiés restants sur fichier afin de l'épurer.

Maintenant, afin d'apporter une nette plus valu à l'envoi de mon mail; j'aurai souhaité savoir comment activer l'accusée de réception, ainsi que l'accusé de lecture, lors de l'envoi de l'e-mail automatique via macro Fin_Mail_TB (demande clôturée) ou savoir si cela était possible?

En vous remerciant encore par avance pour vos retours précieux

Bonjour SabV,

Voici le fameux bout de code que j'ai voulu réadapter pour l'envoi de l'e-mail en copie (tCC) si la demande avait été faite par une personne au profit d'une autre:

quoi2 = Sheets("Demande d'Intervention Clôturée").Range("G28").Value
With Sheets("Table des matières")
 tCC = Application.Index(.Range("G:G"), Application.Match(quoi2, .Range("D:D"), 0))

Celui-ci fonctionne uniquement si une valeur est impactée en G28 (nom); si cette case reste vierge, j'aurai aimé que le tCC soit

 tCC = ""

J'ai essayé de voir en insérant la fonction If; mais sans résultats...

Auriez-vous une proposition à me soumettre afin de tester celle-ci SVP?

Je ne sais pas si vous aviez eu le temps de lire mon précédent post, mais y a t il bout de code particulier que je dois rajouter afin que l'envoi du mail auto se fasse avec accusés de réception et lecture activés SVP?

En vous remerciant par avance.

re...

 quoi2 = Sheets("Demande d'Intervention Clôturée").Range("G28").Value
 If quoi2 = "" then
       tCC = ""
  Else
       With Sheets("Table des matières")
       tCC = Application.Index(.Range("G:G"), Application.Match(quoi2, .Range("D:D"), 0))
   '.....
  End If

1)Je suis juste embêté pour ma cellule "E49" de "demande clôturée" qui me pose pb.

J'ai bien le report de la valeur de mon quota horaire souhaitée de la ligne sélectionnée en colonne "H" de la feuille de "Demandes reçues".

La valeur se reporte mais ne se transforme pas en heure (exemple: valeur "2", je souhaiterai voir afficher 02:00 (hh:mn); et non pas 48:00 comme cela me marque maintenant).

pour reporter une valeur à un format heure,

voici un exemple,

v = 2
Cells(1, 1) = Format(TimeSerial(v, 0, 0), "hh:mm")

pour activer l'accusée de réception je n'ai pas d'idée à ce sujet, désolé

Bonjour SabV,

Merci pour votre réponse.

Je testerai vos éléments ce jour, et vous ferai un retour dans la journée.

Pas de souci pour les accusés...Il semblerait que l'acknowledge ne soit pas exploitable en ligne de commande (je creuserai encore de mon côté au besoin).

Pour info, je comptai insérer un "calendrier" type "Microsoft Date and Time Picker Control 6.0 (SP6)" pour sélectionner une date de fin souhaitée pour les travaux (Feuille "Demande d'Intervention"; Case "C33")...Malheureusement il semblerait que je ne puisse l'activer sous Excel 2016, puisque travaillant avec une version 64 bits...un contournement fonctionne pour les versions 32 bits, mais je me vois mal réinstaller le bouzin juste pour un calendrier à insérer...peut-être que vous avez déjà été confronté au problème et que vous connaissez une autre méthode.

A ce moment-là, je suis preneur

En vous remerciant encore pour toutes les aides et précieux conseils apportés pour l'élaboration de mon fichier.

Bonsoir SabV et membres du forum.

Je me permettait de refaire un retour pour l'avancée de mon fichier excel; qui ma foi; depuis qu'il a été installé sur le serveur fonctionne plutôt bien...

Navré pour l'envoi de mon retour tardif à ce sujet, mais j'ai été confronté à des obligations pro qui m'ont contraintes à ne plus pouvoir suivre le fil du forum et vous faire les retours escomptés; suite à toutes les modifs qui y ont été apportées (en particulier par SabV, grande contributrice de l'avancée de mon petit projet bien utile ).

Cependant, depuis mon retour ce lundi, certains utilisateurs de ce fichier m'ont signalés avoir été confrontés à un nouveau problème...ou alors un problème que je n'ai malheureusement pas intégré dans l'élaboration initiale du code.

En effet, le fichier est fonctionnel sur des postes de travail utilisateurs fonctionnant sous windows 32 bits....mais non fonctionnel, pour la partie macro "envoi du mail" sur les ordis sous Windows 64 bits.

Mon premier diag a permis de déterminer que le code qui fonctionne très bien sous windows 32bits et qui pose pb sous windows 64 bits est la partie suivante:

objShell.Exec ("%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe -compose" & _

Ma question est donc, vu que l'application Mozilla (thunderbird.exe) se situe dans le dossier "Program Files (x86)" sur les ordinateurs en version 64 bits....est-il possible de pouvoir modifier le code afin que la macro exécute l'envoi automatique autant d'un poste 32 bits, que d'un poste 64 bits?... et devrai donc pouvoir contenir aussi le bout de code pour WinX64

objShell.Exec ("%ProgramFiles (x86)%\Mozilla Thunderbird\thunderbird.exe -compose" & _

En vous remerciant par avance pour vos retours bien appréciés.

re,

il existe une version Thunderbird pour Linux 64 bits mais je n'ai pas trouver de version pour Windows 64 bits?

https://www.thunderbird.net/en-US/thunderbird/all/

il faudrait peut être seulement corriger la partie ProgramFiles sur la ligne suivante

objShell.Exec ("%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe -compose" & _

ou est situer le programme thunderbird.exe sur le pc (64 bits) ?

Bonjour Sabv.

Merci à nouveau pour l'interet porté.

Concernant la localisation de l'exe de Thunderbird fonctionnant sur certains PC en 64 bits, il se trouve à "programfiles(x86)"...je l'avais mentionné par ailleurs dans mon post de ce matin 😉

Je sais qu'en modifiant le Code avec cette syntaxe,cela fonctionne...mais... Ce n'est pas ce que je recherche non plus...puisque à ce moment-la, ce dont les ordinateurs en 32 bits qui vont se retrouver avec une erreur de script...

Pas moyen de combiner les 2 ou un Code particulier pour que lors du lancement de la macro, l'exe de Thunderbird se lance automatiquement autant d'un PC 32 bits que d'un PC 64 bits?...

Pour rappel, le fichier se trouve maintenant sur notre serveur.

Merci d'avance pour vos retours precieux.

re,

ll y a peut-être plus simple,

connaitre le nom du répertoire

CheminProgramFiles = Environ("programfiles")

Bonjour SabV.

Je vous remercie pour votre réponse...

Cependant, ce n'est pas ce que je recherche... connaître les versions de Windows n'est pas (nécessairement) utile pour moi...puisque je sais déjà les utilisateurs qui sont en 64 bits et qui ont donc des soucis pour utiliser le fichier en l'état actuel.

Ce que je souhaite, c'est que:

-vu que ce fichier est en "partage" via notre serveur Intranet, que les utilisateurs qui sont sous une session Windows 32 bits (code actuel ne posant pas de soucis pour les Windows 32 bits uniquement) puissent accéder et utiliser le fichier; que les utilisateurs qui sont sous une session Windows 64 bits (code actuel plantant pour eux sur script, puisque accès du fichier pas dans le même chemin de "répertoire).

En clair, que le code de la macro puisse autant s’exécuter sur un Windows 32 bits que 64 bits.

En espérant que ma requête paraisse + clair, cette fois-ci....

En vous remerciant par avance pour votre intérêt et vos retours précieux.

Bonsoir SabV

Bonsoir chers forumeurs,

Je me permet de refaire un petit up de ma requête précédente pour laquelle je suis bloqué à l'heure actuelle pour faire executer la macro de mon fichier disponible sur un serveur.

Fichier et macro fonctionnels via accès et ouverture par un poste PC Windows x86 (32 bits)

Fichier fonctionnel, mais macro non-fonctionnelle via accès et ouverture par un poste PC Windows x64 (64 bits).

Savez-vous si il existe un "merge" possible de codes;

pour que le code puisse autant être fonctionnel via accès par un poste 32 bits avec le code suivant:

objShell.Exec ("%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe -compose" & _

avec le code qui pourrait aussi être fonctionnel via accès par un poste 64 bits avec le code suivant:

objShell.Exec ("%ProgramFiles(x86)%\Mozilla Thunderbird\thunderbird.exe -compose" & _

Je vous remercie d'avance pour les retours que vous pourrez m'apporter, qui me permettrait de pouvoir clôturer ce fil comme résolu.

Merci à tous pour vos contributions (et en particulier SabV)

Bonjour Toons,

à tester,

x = Environ("PROCESSOR_ARCHITECTURE")
Select Case x
 Case "x86":
            'mettre ici le chemin pour 32 bits
 Case "AMD64":
            'mettre ici le chemin pour 64 bits
End Select

Bonjour SabV,

Je viens de lire votre code.

Si je comprends bien, il faut que je fasse cela?

x = Environ("PROCESSOR_ARCHITECTURE")
Select Case x
 Case "x86":objShell.Exec ("%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe -compose" & _
            'mettre ici le chemin pour 32 bits
 Case "AMD64":objShell.Exec ("%ProgramFiles(x86)%\Mozilla Thunderbird\thunderbird.exe -compose" & _
            'mettre ici le chemin pour 64 bits
End Select

C'est bien ça ? ou je n'ai pas compris votre soumission de bout de code?

En vous remerciant.

Rechercher des sujets similaires à "envoi activesheet pdf via mail auto thunder"