Lotus Notes/Excel lier les cellules sous Lotus Notes 6.5.4

Résolu
NadQc Messages postés 2 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 22 février 2008 - 21 févr. 2008 à 22:02
NadQc Messages postés 2 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 22 février 2008 - 22 févr. 2008 à 17:36
Bonjour,
Je suis toute nouvelle sur la planète programmation sous vb 6.3.
J'ai pu, avec un copain informaticien et en mettant des bouts de code d'autres développeurs, faire qu'une plage de données déterminées sous excel soit envoyée dans le corps d'un courriel sous Lotus Notes 6.5.4...et ça fonctionne!!!

Le trouble vient du fait que chaque cellule est encadrée...même si sous Lotus j'enlève les encadrés, la personne qui reçoit le courriel aura les cellules encadrées.
La solution que j'ai trouvé serait de lier toutes les cellules sous Lotus Notes(je n'ai qu'une colonne donc pas de trouble pour la mise en page) car à ce moment là, la personne qui reçoit aurait un gros encadré...mais un seul pour tout le tableau!!! Ce qui visuellement, passera mieux dans ma hiérarchie!

J'ai essayé de mettre le code mais cela ne fonctionne pas, alors j'ai mis ' devant les lignes qui fonctionnent pas...pour les neutraliser. Le code ajouté est tout en bas du code en pink.

Si quelqu'un avait une solution ou une idée pour résoudre ce problème, cela serait fort apprécié.

Merci!!!

CODE UTILISÉ :

' Ce module permet l'envoi d'un mail par le logiciel client SMTP par défaut du système


'


' le principe est de créer un lien de type "mailto:"


' et de demander au programme appelant de suivre ce lien


'


' Les arguments Adresse, Objet, Corps et Adresses de copie et de copie cachés sont fournis à la procédure


' qui les utilise pour définir l'hyperlien qui sera activé par la méthode


' FollowHyperLink du classeur actif


'


' le problème est que VB suit le lien


' (ici il lance le programme de messagerie en lui fournissant les infos nécessaires)


' puis se désintéresse du problème


' c'est donc à l'utilisateur de finir le travail :


' choix éventuel de la pièce jointe et envoi du message.


'


' pour automatiser complètement le processus,


' on utilise une méthode un peu simpliste mais efficace :


' simuler l'appui sur les touches à utiliser pour envoyer le message


' à l'aide de l'instruction SendKeys.


' en temporisant les envois successifs de touches, on y arrive très bien


'


' Inconvénient de la méthode : chaque logiciel de messagerie utilise ses propres


' menus (donc touches) pour joindre un fichier et envoyer le message


' par exemple : Outlook Express utilise le menu Intsertion (touche : Alt-I)


' puis le sous menu Pièce (touche : P)


' et l'envoi du message se fait par Alt-Entrée


'


' pour pallier à cet inconvénient, je propose de stocker dans 2 tableaux


' TouchesPJ() et TouchesEnvoi()


' l'enchaînement de touches à utiliser


' il suffit donc d'activer l'initialisation qui va bien pour le client utilisé.


' ------------------------------------------------------------------


Option Explicit


' ------------------------------------------------------------------


'Déclaration des tableaux qui recevront les touches à utiliser suivant


' le logiciel de messagerie par défaut du système.


' Déclarés ici, les tableaux ont une portée qui couvre tout le module


Dim TouchesPJ(5) As String, TouchesEnvoi(5) As String, TouchesCRT(5) As String


' ------------------------------------------------------------------


' Procédure principale qui compose les éléments du message


' et effectue la demande d'envoi


' c'est cette procédure qui sera appelée par le programme principal (ici Excel)


'


Sub EnvoiEmail(Adresse As String, Objet As String, Corps As String, ClientMessagerie As Integer, Optional ZoneACopierColler As Object, Optional PJ As String, Optional Cc As String, Optional Bcc As String, Optional Collage As Boolean, Optional CollageTexteRiche As Boolean)


' Remarques : les arguments : Adresse, Objet, Corps et ClientMessagerie sont obligatoires


' ClientMessagerie prend les valeurs suivantes à l'heure actuelle :


    ' 1=Outlook Express
   
    ' 2=Mozilla Thunderbird
   
    ' 3=Office Outlook
   
    ' 4=Une autre version pour Outlook2003
   
    ' 5=Incredimail
   
    ' 6=Office Outlook 2007
   
    ' 7=Office2000OutLook
               
    ' 8=LotusNotes
               
    ' 9=...à vous d'ajouter d'autres clients


' l'argument PJ (pièce jointe) est optionnel. S'il est fourni,


' c'est le chemin complet du fichier à joindre qui doit être fourni


' pour joindre plusieurs pièces,


' les arguements Cc (copie) et Bcc (copie cachée) sont également facultatifs


' l'argument Collage permet d'indiquer à la procédure si elle doit coller


' le contenu du presse papier dans le corps du message


' Si ZoneACopierColler est renseigné, c'est cet argument qui est collé dans le corps du message




' POUR LOTUS NOTES EXCLUSIVEMENT (pour le moment...)


' l'argument CollageTexteRiche permet de spécifier si l'on souhaite que les données dans ZoneACopierColler


' soit coller en Texte Riche.


'-----------------------------------------------------------------------------


' Quelques exemples d'appel de la procédure EnvoiMail depuis un classeur Excel


'


' Envoi simple sans pièce jointe :


' EnvoiMail Range("A1"), Range("A2"), Range("A3")




' Si les cellules sont nommées :


' EnvoiMail Range("Adresse"),Range("Sujet"),Range("Corps")




' Pour envoyer une plage :


' EnvoiMail Range("Adressse"),Range("Sujet"),PT(Range("A3:A10"))




' En utilisant les  arguements nommés (c'est le plus clair):


' EnvoiMail Adresse:= Range("A1"), _


'           Objet:= Range("A2"), _


'           Corps:= PH(Range("A3:A10")), _


'           Collage:= True _


'           PJ:= Application.Path & "\AJoindre.jpg" _


'           Bcc:="[mailto:zorro@fantomas.com zorro@fantomas.com]"


'--------------------------------------------------------------------------------


Dim HyperLien As String ' Reçoit les éléments de l'hyperlien


                        ' composés à partir des arguments fournis à la procédure


Dim i As Integer        ' un compteur


' la syntaxe de base du mailto est la suivante :


' [mailto:dest@domaine.bof?Subject=Le mailto:dest@domaine.bof?Subject=Le] sujet du message _


'                         &Body=Le corps du message _
'
 '                        &cc=Destinataire copie _
'
 '                        &bcc=Destinataire copie cachée
'


HyperLien = "mailto:" & Adresse & "?"       ' Le ? introduit les arguments


HyperLien = HyperLien & "Subject=" & Objet


If Not Collage Then ' (en cas de collage, le corps est ajouté juste avant le collage)


    HyperLien = HyperLien & "&Body=" & Corps    ' le & sépare les arguments


End If


If Cc <> "" Then HyperLien = HyperLien & "&cc=" & Cc


If Bcc <> "" Then HyperLien = HyperLien & "&bcc=" & Bcc




' Activation du lien


'


ActiveWorkbook.FollowHyperlink HyperLien    ' Pour Excel (les autres doivent être en commentaire)


'ThisDocument.FollowHyperlink HyperLien      ' Pour Word (les autres doivent être en commentaire)


'Application.FollowHyperlink HyperLien       ' Pour Access (les autres doivent être en commentaire)


 




Attendre 2                                  ' Appel d'une procédure qui temporise


                                            ' c'est à dire que la procédure courante


                                            ' (ici EnvoiMail) est suspendue pendant 5s


                                            ' cela permet d'Attendre que le client


                                            ' de messagerie soit lancé et prêt


                                            ' avant d'envoyer les touches


                                            ' sinon ce serait le programme appelant


                                            ' (ici Excel) qui recevrait les touches


                                            ' A REGLER selon votre config


Select Case ClientMessagerie      ' appel du chargement des tableaux des touches selon le


                        ' client de messagerie indiqué


    Case 1


        OutLookExpress


    Case 2


        MozillaThunderbird


    Case 3


        Office2003OutLook


    Case 4


        Office2003OutLookV2


    Case 5


        Incredimail


    Case 6


        Office2007OutLook


    Case 7


        Office2000OutLook


    Case 8


        LotusNotes


    Case Else


        MsgBox "Aucun client de messagerie connu n'est indiqué"


        Exit Sub


End Select




' l'argument  de FollowHyperlink se plante au delà de 817 caractères


' donc pour les long messages, on peut utiliser le copier/coller


' C'est le programme appelant qui effectue le COPIER


' (éventuellement même une copie de cellules en tant qu'image : Selection.CopyPicture)


' la présente procédure se contente de COLLER le contenu du presse-papier


' si l'arguement Collage est à True


If Collage Then


    ' colle puis insère le texte du message au début du message


    SendKeys "{TAB}", True  ' passage sur le corps du message ==> Nécessaire pour Lotus notes


    If Not (TypeName(ZoneACopierColler) = "Nothing") Then
   
        ZoneACopierColler.Copy


        If CollageTexteRiche And TouchesCRT(0) <> "" Then
       
            For i = 1 To TouchesCRT(0)  ' dans TouchesCRT(0) on a stocké le nombre de touches


                                        ' à envoyer au programme pour joindre une pièce


                SendKeys TouchesCRT(i), True     ' Envoie les touches de copie en texte riche


                Attendre 0.5                       ' temporise (à règler éventuellement)


            Next i
           
            SendKeys "{Enter}", True    ' validation de la copie Texte Riche
           
            SendKeys "{Enter}", True
            SendKeys "{Enter}", True
       
        Else
       
            SendKeys "+{INSERT}", True  ' collage
           
            SendKeys "{Enter}", True


        End If
       
    End If


    Attendre 1


    SendKeys "^{HOME}", True    ' début du message


    SendKeys Corps, True        ' envoi du corps du message


    SendKeys "{Enter}", True    ' ligne suivante
       
    SendKeys "{DOWN}", True     ' ligne en bas permet de rentrer dans le tableau
   
   


End If


' Le traitement de la pièce jointe ne s'exécute que si la procédure à reçu qqchose


' dans l'argument PJ (Optional<=>Facultatif)




If PJ <> "" Then


    For i = 1 To TouchesPJ(0)   ' dans TouchesPJ(0) on a stocké le nombre de touches


                                ' à envoyer au programme pour joindre une pièce


        SendKeys TouchesPJ(i), True     ' Envoie les touches d'ajout d'1 pièce jointe


        Attendre 0.5                        ' temporise (à règler éventuellement)


    Next i


    SendKeys PJ, True       ' A ce stade le programme Attend un nom de fichier


                            ' on lui envoie


    Attendre 0.5                ' on temporise


    SendKeys "{ENTER}", True    ' et on valide ce nom de fichier


    Attendre 0.5


End If


For i = 1 To TouchesEnvoi(0)


  '  SendKeys TouchesEnvoi(i), True  ' on envoie le message


    Attendre 1


Next i


End Sub




Sub Attendre(Secondes As Long)


' Cette procédure temporise pendant le nombre de secondes qu'on lui transmet en argument


Dim Début As Long, Fin As Long, Chrono As Long


Début = Timer


Fin = Début + Secondes


Do Until Timer >= Fin


    DoEvents


Loop


End Sub




Sub OutLookExpress()


'Initialisation des tableaux de touches pour Outlook Express


    ' Pour une pièce jointe


    TouchesPJ(0) = 2        ' Nombre de touches nécessaires


    TouchesPJ(1) = "%i"     ' Appel du menu Insertion par la touche Alt-i


    TouchesPJ(2) = "p"      ' appel du sous-menu pièce par la touche p


    ' Pour l'envoi du mail


    TouchesEnvoi(0) = 1     ' Nombre de touches nécessaires


    TouchesEnvoi(1) = "%s"  ' Envoi du message avec Alt-s


End Sub




Sub MozillaThunderbird()


'Initialisation des tableaux de touches pour Mozilla Thunderbird


    ' Pour une pièce jointe


    TouchesPJ(0) = 4        ' Nombre de touches nécessaires


    ' il semble que l'appel par Alt-f du menu fichier ne marche pas


    ' à tous les coups donc (merci à FRED65200)


    TouchesPJ(1) = "{F10}"     ' Appel des menus par {F10}


    TouchesPJ(2) = "f"     ' Appel du menu Fichier par la touche f


    TouchesPJ(3) = "j"      ' appel du sous-menu Joindre par la touche j


    TouchesPJ(4) = "f"      ' appel du sous-sous-menu Fichier par la touche f


    ' Pour l'envoi du mail


    TouchesEnvoi(0) = 2             ' Nombre de touches nécessaires


    TouchesEnvoi(1) = "^{ENTER}"    ' Envoi du message avec Ctrl-Entrée


    TouchesEnvoi(2) = "{ENTER}"     ' confirmation par Entrée


End Sub




Sub Office2003OutLook()


'Initialisation des tableaux de touches pour Office Outlook 2003


    ' Pour une pièce jointe


    TouchesPJ(0) = 2        ' Nombre de touches nécessaires


    TouchesPJ(1) = "%i"     ' Appel du menu Insertion par la touche Alt-i


    TouchesPJ(2) = "f"      ' appel du sous-menu fichier par la touche f


    ' Pour l'envoi du mail


    TouchesEnvoi(0) = 1     ' Nombre de touches nécessaires


    TouchesEnvoi(1) = "%v"  ' Envoi du message avec Alt-v


End Sub




'--------------------------------------------------------


' Voici quelques contributions trouvées sur le forum


' pour d'autres logiciels de messagerie


' merci à leurs auteurs


' par contre, je ne les ai pas vérifiés


'--------------------------------------------------------




Sub Incredimail()


    ' Contribution de KOLOCO pour Incredimail


    ' Initialisation des tableaux de touches pour Incrédimail


    ' Pour une pièce jointe


    TouchesPJ(0) = 1        ' Nombre de touches nécessaires


    TouchesPJ(1) = "^+a"    'Appel du menu Insertion Fichier par la touche Ctrl+Shift+A


    ' Pour l'envoi du mail


    TouchesEnvoi(0) = 1     ' Nombre de touches nécessaires


    TouchesEnvoi(1) = "%s"  'Envoi du message avecAlt-s


End Sub




Sub Office2003OutLookV2()


    ' Version corrigée par CLARK1978 à essayer si la version d'origine ne gère pas


    ' la touche Alt-i correctement


    ' Initialisation des tableaux de touches pour Office Outlook 2003


    ' Pour une pièce jointe


    TouchesPJ(0) = 3            ' Nombre de touches nécessaires


    TouchesPJ(1) = "%a"         'Appel du menu Insertion par la touche Alt-a (affichage)


    TouchesPJ(2) = "{RIGHT}"    ' puis flèche à droite


    TouchesPJ(3) = "f"          ' appel du sous-menu fichier par la touche f


    ' Pour l 'envoi du mail


    TouchesEnvoi(0) = 1         ' Nombre de touches nécessaires


    TouchesEnvoi(1) = "%v"      ' Envoi du message avecAlt-v


End Sub




Sub Office2007OutLook()


    ' Contribution de PC512 pour Office 2007


    ' Initialisation des tableaux de touches pour Office Outlook 2007


    ' Pour une pièce jointe


    TouchesPJ(0) = 2        ' Nombre de touches nécessaires


    TouchesPJ(1) = "%s"     ' Appel du menu Insertion par la touche Alt-i


    TouchesPJ(2) = "jf"     ' appel du sous-menu fichier par la touche f


    ' Pour l'envoi du mail


    TouchesEnvoi(0) = 1     ' Nombre de touches nécessaires


    TouchesEnvoi(1) = "%v"  'Envoi du message avec Alt-v


End Sub




Sub Office2000OutLook()


    ' Contribution de TANATLOC92 pour Office Outlook 2000


    ' Initialisation des tableaux de touches pour Office Outlook 2000


    ' Pour une pièce jointe


    TouchesPJ(0) = 2 ' Nombre de touches nécessaires


    TouchesPJ(1) = "%i" ' Appel du menu Insertion par la touche Alt-i


    TouchesPJ(2) = "f" ' appel du sous-menu fichier par la touche f


    ' Pour l'envoi du mail


    TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires


    TouchesEnvoi(1) = "^{ENTER}" ' Envoi du message avec Ctrl-Entrée


End Sub





Sub LotusNotes()


    ' Initialisation des tableaux de touches pour LotusNotes


    ' Pour une pièce jointe


    TouchesPJ(0) = 2 ' Nombre de touches nécessaires


    TouchesPJ(1) = "%f" ' Appel du menu Fichier avec la combinaison Alt-f
   
    TouchesPJ(2) = "r" ' appel du sous-menu Rattachement par la touche r
   
    ' Pour la copie en texte riche
   
    TouchesCRT(0) = 3 ' Nombre de touches nécessaires


    TouchesCRT(1) = "%e" ' Appel du menu Edition avec la combinaison Alt-e
   
    TouchesCRT(2) = "s" ' appel du sous-menu Copie Spéciale par la touche s
   
    TouchesCRT(3) = "{DOWN 1}" ' appuie de la touche vers le bas (1 fois)



    ' Pour sélectionner les cellules du tableau
   
   ' TouchesCRT(0) = 2 ' Nombre de touches nécessaire
   
   'TouchesCRT(1) = "%" ' Appel des raccourcis par la touche Alt
   
    'TouchesCRT(2) = "b" ' Appel du menu Tableau par la touche b
   
    'TouchesCRT(3) = "b" ' Appel du sous-menu Sélectionner dans Tableau par la touche b



    'TouchesCRT(4) = "t" ' Appel du sous-sous-menu Toutes les cellules par la touche t
   
    'Pour lier les cellules du tableau
   
   ' TouchesCRT(0) = 5 ' Nombre de touches nécessaire
 
   ' TouchesCRT(1) = "%" ' Appel des raccourcis par la touche Alt
 
   ' TouchesCRT(2) = "b" ' Appel du menu Tableau par la touche b
  
  '  TouchesCRT(3) = "i" ' Appel du sous-menu Lier cellules par la touche i

      
    ' Pour l'envoi du mail


    TouchesEnvoi(0) = 2 ' Nombre de touches nécessaires
                        ' Mettre à 1 si il n'y a pas de verification automatique de l'orthographe du mail


    TouchesEnvoi(1) = "%&" ' Envoi du message avec Alt-1
   
    TouchesEnvoi(2) = "%v" ' Vérification de l'orthographe du mail (Option facultative....)
                            ' A mettre exclusivement si la verification de l'orthographe du mail est automatique....


End Sub


 




 

2 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 févr. 2008 à 08:24
déplacé de VB6 vers VBA!
3
NadQc Messages postés 2 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 22 février 2008
22 févr. 2008 à 17:36
Bonjour,

En y travaillant je pense que j'ai trouvé une solution. Cela ne peux s'appliquer malheureusement que au tableau excel ayant une seule colonne!!! Dans mon cas présent, cela me suffit. De même, il reste un encadré autour du tableau mais je pense qu'il restera à part si une âme charitable trouve une solution. Je n'ai testé le code que pour le passage de excel vers Lotus Notes. Je ne sais pas si l'envoie via d'autres gestionnaires de messagerie fonctionne mais comme le code reprends en majeure partie ceux d'autres personnes (plus calées que moi) je pense que ça fonctionne probablement.

Je vous mets le code à ajouter dans le code de mon 1er message. Il faut supprimer aussi dans mon 1er message les lignes qui ne servent à rien tout en bas du code dans la section Lotus Notes car je tatonnais et cela ne convenait pas.

Code :

If Collage Then


    ' colle puis insère le texte du message au début du message


    SendKeys "{TAB}", True  ' passage sur le corps du message ==> Nécessaire pour Lotus notes


    If Not (TypeName(ZoneACopierColler) = "Nothing") Then
   
        ZoneACopierColler.Copy


        If CollageTexteRiche And TouchesCRT(0) <> "" Then
       
            For i = 1 To TouchesCRT(0)  ' dans TouchesCRT(0) on a stocké le nombre de touches


                                        ' à envoyer au programme pour joindre une pièce


                SendKeys TouchesCRT(i), True     ' Envoie les touches de copie en texte riche


                Attendre 0.5                       ' temporise (à règler éventuellement)


            Next i
           
            SendKeys "{Enter}", True    ' validation de la copie Texte Riche
           
            SendKeys "{Enter}", True
            SendKeys "{Enter}", True
       
        Else
       
            SendKeys "+{INSERT}", True  ' collage
           
            SendKeys "{Enter}", True


        End If
       
    End If


    Attendre 1


    SendKeys "^{HOME}", True    ' début du message


    SendKeys Corps, True        ' envoi du corps du message


    SendKeys "{Enter}", True    ' ligne suivante
       
    SendKeys "{DOWN}", True     ' ligne en bas pour rentrer dans le tableau
                
    SendKeys "%", True          ' Pour sélectionner les cellules du tableau Appel des raccourcis par la touche Alt
   
    SendKeys "{b}", True        ' Appel du menu Tableau par la touche b
   
    SendKeys "{b}", True        ' Appel du sous-menu Sélectionner dans Tableau par la touche b
   
    SendKeys "{t}", True        ' Appel du sous-sous-menu Toutes les cellules par la touche t
   
    SendKeys "%", True          ' Pour sélectionner les cellules du tableau Appel des raccourcis par la touche Alt
   
    SendKeys "{b}", True        ' Appel du menu Tableau par la touche b
   
    SendKeys "{i}", True        ' Appel du sous-menu Lier cellules par la touche i    
  


End If
3
Rejoignez-nous