XL 2019 Générer mails sous conditions

66alex66

XLDnaute Nouveau
Bonjour,

J'essaie de créer un code sous VBA me permettant de générer automatiquement la création d'un mail, sous certaines conditions.

A noter que le code VBA déjà présent dans mon fichier fonctionne +/-, mais il y aurait quelques ajustement à réaliser car le résultat obtenu n'est pas celui escompté.

Je possède un tableau de 4 colonnes :

Titre de la colonne F situé en cellule F36 a pour titre "EAN"

Titre de la colonne F situé en cellule F36 a pour titre "FOURNISSEUR"

Titre de la colonne H situé en cellule H36 a pour titre "VRAI CLIENT"

Titre de la colonne I situé en cellule I 36 a pour titre "FAUX CLIENT"
----------------------------------------------------------------------------------

J'ai déjà réalisé une ébauche de code VBA associé au bouton "MAIL".
L'idée est qu'un corps mail se génère en fonction du fournisseur d'énergie impacté par la problématique reprise ci-dessus :

Le corps du mail a la possibilité de générer 2 listes à puces :

1. Soit en cas de ILC

2. Soit en cas de SA


Pour créer une liste à puce ILC
, voici la condition : Commencez par identifier le VRAI CLIENT pour chaque fournisseur listé en colonne G, notant que ce VRAI CLIENT se trouve dans la cellule directement à droite, en colonne H, sur la même ligne que son fournisseur.
Par exemple, si LUMINUS est mentionné en G37, le VRAI CLIENT correspondant doit être en H37.
Lorsque le code recherche les noms des clients en colonnes I et H, il doit ignorer les inversions entre noms et prénoms. Ainsi, si "Haubruge Delia" apparaît en colonne H et "Delia Haubruge" en colonne I, ces noms doivent être considérés comme similaires. Après avoir identifié le VRAI CLIENT, le code VBA doit vérifier si le nom du VRAI CLIENT en colonne H est également présent dans la colonne des FAUX CLIENTS (colonne I). Si le nom du VRAI CLIENT n'est pas trouvé dans cette dernière, le code doit générer une liste à puce de la manière suivante :

  • Initier un ILC au nom de (copiez et collez en gras le nom du FAUX CLIENT trouvé en cellule I, adjacente à la cellule H où le VRAI CLIENT n'a pas été identifié, en tenant compte des inversions nom/prénom) sur le point de consommation (copiez et collez en gras le texte de la colonne EAN, situé en F, sur la même ligne que le VRAI CLIENT qui n'a pas été retrouvé en I).
Pour créer une liste à puce SA, le code doit suivre cette instruction : Vérifier, pour chaque entrée de fournisseur en colonne G, si un nom listé comme FAUX CLIENT (colonne I) correspond également à un nom dans la liste des VRAI CLIENTS (colonne H). Cela indiquerait une souscription du client au mauvais fournisseur, nécessitant la création d'une liste à puce. Pour déterminer à quel fournisseur envoyer la liste à puce SA, le code doit identifier où le nom du FAUX CLIENT en colonne I apparaît parmi les VRAI CLIENTS en colonne H, et retenir le fournisseur associé en colonne G sur la même ligne que le VRAI CLIENT. Lorsque cette condition est remplie, la liste à puce à générer est comme suit :

  • Initier un SA au nom de (copiez et collez le nom du FAUX CLIENT trouvé en colonne I qui apparaît aussi en colonne H) sur le point de consommation (le code doit localiser où le nom du FAUX CLIENT est mentionné en colonne H et copier/coller l'EAN de la colonne F situé sur la même ligne).

Sur base de mon tableau annexé, voici les 3 mails que je devrais obtenir :

Mail à envoyer à Luminus :

1709468749944.png


Mail à envoyer à Engie :

1709468927617.png



Mail à envoyer à ORES FS :

1709468973140.png


D'avance, un tout grand merci pour votre aide.
 

Pièces jointes

  • GenererMails.xlsm
    48.3 KB · Affichages: 7

Oneida

XLDnaute Impliqué
Re,
Apres decorticage de Function ClientDansFauxClient(vraiClient As String, rngFauxClients As Range) As Boolean,
il est impossible de trouver une egalite entre
François Isabelle et Isabelle François
Huppe Isabelle et Isabelle HUPPE
meme en minuscule
Si Prenom et nom sont dans les deux colonnes comme Plas Véronique et Plas Véronique ok
Donc je reprends ca
 

Oneida

XLDnaute Impliqué
Bonjour,
Pas d'infos pour fournisseur ORES FS: dans dictEmails--->ORES
Apres mise a jour du fichier que je code , ILC pour Les deux lignes de ce fournisseur e aussi avec votre fichier d'origine
Je regarde pourquoi
Quand cette partie sera resolue, je regarde pour grouper les infos par fournisseur

Vous dites d'ignorer les Prenoms, comment vous ferez si vous avez deux personnes du meme Nom et Prenom different

Perso, pour le moment je ne les ignore pas mais dans ce cas François Isabelle ca donne quoi
 
Dernière édition:

66alex66

XLDnaute Nouveau
Re, relisez le post, j'ai ajoute des infos
Re,

Oui, en effet, il serait plus logique de ne pas négliger les prénoms, mais plutôt de prendre en compte à la fois le prénom et le nom.

J'avais du mal à développer un code capable d'ignorer les inversions entre prénoms et noms. Par exemple, on peut voir "François Isabelle" dans la colonne des vrais clients et "Isabelle Français" dans celle des faux clients. Cette inversion rendait difficile pour le code de comprendre qu'il s'agit du même client.
 

Oneida

XLDnaute Impliqué
Re,

Oui, en effet, il serait plus logique de ne pas négliger les prénoms, mais plutôt de prendre en compte à la fois le prénom et le nom.

J'avais du mal à développer un code capable d'ignorer les inversions entre prénoms et noms. Par exemple, on peut voir "François Isabelle" dans la colonne des vrais clients et "Isabelle Français" dans celle des faux clients. Cette inversion rendait difficile pour le code de comprendre qu'il s'agit du même client.
Certes certes, mais mettre Prenom et Nom dans les deux colonnes pourrait etre possible ou pas plutot qu'un melange?
Ca simplifierait beaucoup
 

Oneida

XLDnaute Impliqué
Re,
Oui ce serait possible.

Ben Faites le
Je modifie le fichier actuel

suite:
C'est Ok pour le nombre @MAIL en fonction des infos vrai/faux
Je regarde pour grouper

Y a plus besoin de votre pedigre en fin du corps de message!


En Attendant, fichier avec envoi groupe par fournisseur.
Je trouve que le temps d'execution est un peu long.
Je regarde
 

Pièces jointes

  • GenererMails_swf_GRMail.xlsm
    126.8 KB · Affichages: 3
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 561
Messages
2 089 658
Membres
104 248
dernier inscrit
pegaso