Liste dynamique de diffusion de messagerie

lolo54

XLDnaute Nouveau
Bonjour,

j'ai déjà fait appel aux experts de ce forum lesquels m'ont apporté leur expertise pour écrire du code VBA
à l'intérieur d'un classeur pour pouvoir regrouper des adresses de messagerie en fonction d'un type de document particulier.
Je souhaiterai améliorer ce projet comme ci-après.

J'ai créé un classeur excel nommé : ProjetDiffusion.xls au format 97-2003 que je joins à cette discussion.

Dans ce classeur on trouve une feuille nommée :

- CIRCUIT

Pour être simple dans mon explication :

dans la feuille CIRCUIT:
en A4:A33 figurent les types de documents à diffuser;
en B1:AE3 figurent les destinataires concernés / le nom du destinataire / la ou les adresse(s) émail;
dans la zone B4:AE33 est précisé le chiffre 1 pour indiquer le ou les types de documents à transmettre à chaque destinataire. Les destinataires et les adresses émail changent assez souvent.

mon voeu :
Etant placé dans dans n'importe laquelle des cellules de la zone A4:A33 et sur double clic dans l'une des cellules, obtenir la copie (dans le presse-papier de Windows) du regroupement des adresses e-mèl de la ligne concernée.
Exemple :
Je souhaite avoir dans le presse-papier de Windows le regroupement des adresses emèl des destinataires concernés par le document 1 - DOC
je dois avoir dans le presse-papier de Windows les adresses e-mèl suivantes:
dupont@free.fr; durand@hotmail.fr; carton@caramail.com;

Vous l'aurez compris, Il suffira alors de coller le contenu du presse papier dans la zone destinataire du logiciel de messagerie.


merci d'avance pour vos lumières.


lolo54

:)
 

Pièces jointes

  • ProjetDiffusion.xls
    43 KB · Affichages: 35
  • ProjetDiffusion.xls
    43 KB · Affichages: 31
  • ProjetDiffusion.xls
    43 KB · Affichages: 35

Gareth

XLDnaute Impliqué
Re : Liste dynamique de diffusion de messagerie

Bonsoir,

Ci-joint une macro à tester.

NB - Dans l'editeur Vba il faut que la référence Microsoft Forms 2.0 Object Library soir cochée (dans Outils/Références)
 

Pièces jointes

  • ProjetDiffusion.xls
    43.5 KB · Affichages: 41
  • ProjetDiffusion.xls
    43.5 KB · Affichages: 41
  • ProjetDiffusion.xls
    43.5 KB · Affichages: 38

lolo54

XLDnaute Nouveau
Re : Liste dynamique de diffusion de messagerie

Bonjour Gareth,

super surprise ce matin.
Je me demandais si quelqu'un arriverait à trouver le code VBA correspondant à mes attentes pour cette liste de messagerie.
Je viens de tester et effectivement ça fonctionne.

Ce qui est bien et ça je ne l'avais pas précisé dans la discussion :
c'est qu'il est possible d'ajouter des colonnes et même des lignes (sait-on jamais) le code VBA fonctionne aussi et ça c'est super.

ce qui est perfectible :
l'intégration de la gestion des erreurs du classeur. En effet :
tout double-clic opéré ailleurs que dans la première colonne (type de document) VBA affiche un message d'erreur d'exécution 5 "argument ou appel de procédure incorrect".
En fait et pour ne pas trop compliquer la procédure évènementielle actuelle, il faudrait préciser à VBA que tout double-clic opéré ailleurs que dans la première colonne et à partir de la cellule A4 ne donne lieu à aucun message d'erreur.

Mis à part çà je suis pour la deuxième fois satisfait par les prouesses des experts excel de ce forum.
Après avoir utilisé Access depuis de nombreuses années, je commence seulement à approfondir VBA pour EXCEL, mais il me faudra encore bien des mois pour arriver à des résultats comme celui exposé dans cette discussion.

A ce sujet pourriez-vous assortir le code VBA des commentaires pour en comprendre le cheminement.


Encore merci pour cet excellent travail.


cordialement à vous Gareth


lolo54

:)
 

Gareth

XLDnaute Impliqué
Re : Liste dynamique de diffusion de messagerie

Bonjour,

Ci-joint une version commentée et corrigée.
Le PutInClipboard était mal placé...
 

Pièces jointes

  • ProjetDiffusion.xls
    42.5 KB · Affichages: 29
  • ProjetDiffusion.xls
    42.5 KB · Affichages: 29
  • ProjetDiffusion.xls
    42.5 KB · Affichages: 24

lolo54

XLDnaute Nouveau
Re : Liste dynamique de diffusion de messagerie

Re-Bonjour Gareth,

On arrive presque au but recherché....

Juste un petit détail à peaufiner :

en mettant 1 dans cellules B4:C4 et après double-clic dans la cellule A4 obtient après collage dans le notepad de Windows le résultat suivant :

a1@free.fr; a2@hotmail.fr; ;a3@gmail.com; ;a4@caramail.com;

serait-il possible de concaténer les adresses pour obtenir le collage ci-après :
a1@free.fr; a2@hotmail.fr; a3@gmail.com; a4@caramail.com;

Bon vous allez me dire que de toute façon sur Outlook les points-virgules de trop seront de toute façon supprimés automatiquement. Mais c'est juste pour le fun et pour voir le code qui sera nécéssaire pour obtenir ce résultat.

En tout cas merci beaucoup Gareth


:)
 

lolo54

XLDnaute Nouveau
Re : Liste dynamique de diffusion de messagerie

Bonjour Si....

l'approche de ta version est très intéressante si ce n'est que :
a) gestion des erreurs :
pour un type de document et lorsqu'il n'y a pas de 1 dans l'espace prévu à cet effet VBA affiche un message d'erreur d'exécution 1004 "pas de cellules correspondantes".
b)
pour un type de document et si l'on met des 1 partout sur toute la ligne la dernière adresse est tronquée comme suit :
a1@free.fr; a2@hotmail.fr; ; a3@gmail.com; a4@caramail.com; a5@free.fr; a6@hotmail.fr; a7@caramail.com; a8@free.fr; a9@hotmail.fr; a10@free.fr; a11@hotmail.fr; a12@caramail.com; a13@free.fr; a14@hotmail.fr; a15@free.fr; a16@hotmail.fr; a17@caramail.com; a18@free.fr; a19@hotmail.fr; a20@free.fr; a21@hotmail.fr; a22@caramail.com; a23@free.fr; a24@hotmail.fr; a25@free.fr; a26@hotmail.fr; a27@caramail.com; a28@free.fr; a29@hotmail.fr; a30@free.fr; a31@hotmail.fr; a32@caramail.com; a33@free.fr; a34@hotmail.fr; a35@free.fr; a36@hotmail.fr; a37@caramail.com; a38@free.fr; a39@hotmail.fr; a40@free.fr; a41@hotmail.fr; a42@caramail.com; a43@free.fr; a44@hotmail.fr; a45@free.fr; a46@hotmail.fr; a47@caramail.com; a48@free.fr; a49@hotmail.fr; a50@caramail.com; a51@free.fr; a52@hotmail.f <-- (il manque le r dans la dernière adresse)

je joins à ce courriel un fichier excel ou j'ai apporté à des fins de test quelques corrections (ajout de lignes et de colonnes) et j'ai changé le nom des adresses afin qu'il n'y ai pas de doublon.

Sinon excellent travail.

Gareth m'a aussi transmis une version dont j'attends une petite correction de sa part. Mais ceci dit ta version est très intéressante car elle gère les adresses en doublon ce qui est un plus.

J'attends donc avec impatience vos versions corrigées avant de clôturer définitivement cette discussion.

Encore merci Si.....


@+

lolo54
 

Pièces jointes

  • Copie de ListeSansDoublonClipBoard.v1.xls
    48.5 KB · Affichages: 65

Si...

XLDnaute Barbatruc
Re : Liste dynamique de diffusion de messagerie

re

tu rajoutes la dernière ligne
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Cancel As Boolean)
  Dim C As Range, liste As New DataObject, A, Temp, T As String, N As Byte
  'si or A2:A.. ou vide rien
  If R.Column > 1 Or R.Row < 2 Or R = "" Then Exit Sub
  If Application.Sum(Rows(R.Row)) = 0 Then Exit Sub
  ...

et pour la problème du dernier caractère*, cela peut, peut-être, convenir
Code:
 'chirurgie esthétique
  T = Left(T, Len(T) - 1)
  ...

* pas commode avec tes espaces ou ; inutiles. Tu risques d'en avoir 1 à la fin :p
 

lolo54

XLDnaute Nouveau
Re-Bonsoir Si...,

Je viens de tester et cela fonctionne bien mais j'ai du modifier le type de variable N que j'ai déclaré en tant que integer car VBA m'indiquait un dépassement de capacité.

Une dernière chose :

je souhaiterai que la boite de dialogue n'apparaisse plus sauf peut-être dans le cas ou il y aurait une adresse en doublon et dans ce cas que la ou les adresses en doublon apparaissent dans cette boite. Mais c'est facultatif.

Merci pour m'avoir aidé à solutionner ce classeur excel qui me sera bien utile.

Ah! oui j'allais oublier, je voudrai savoir comment modifier cette procédure qui sert à désactiver les liens hypertexte de la feuille excel. Les liens hypertexte sont bien désactivés mais je souhaiterai que les adresses situées dans la cellule soient centrées en haut et en bas de la cellule.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Hyperlinks.Delete


encore merci pour cet excellent travail

lolo54

:)
 

lolo54

XLDnaute Nouveau
Re : Liste dynamique de diffusion de messagerie

Bonsoir Gareth,

ton fichier correspond en tous points à mes attentes sauf pour les points-virgules (voir mon message du 09-02 à 14h47.

Pourrais-tu faire la correction s'il te plait ?


merci beaucoup


cordialement


lolo54
 

Discussions similaires

Réponses
2
Affichages
240

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote