Modification/Remplacement de cellules "à la volée"

  • Initiateur de la discussion Matthieu Castel
  • Date de début
M

Matthieu Castel

Guest
Bonjour,

Je ne sais pas tellement comment expliquer mon problème, mais je recherche une fonction, un script ou une macro permettant de réaliser ce qui suit :

J'ai de très nombreux champs contenant des noms, des prénoms, et des adresses email.




Chaque ligne se présente ainsi : (4 colones)



A (Prenom) - B (Nom) - C (Raison sociale) - D (email)

--------

Jean - Dupont - Societe MACHIN - prenom.nom@societemachin.fr

Francois - Dumont - Societe BIDULE - prenom.nom@societebidule.net

Brigitte - Bardot - Association Protection des Animaux - prenom.nom@fondationbb.asso.fr

--------





En réalité chaque email commence par 'prenom.nom' ... (et non jean.dupont ou francois.dumont ou brigitte.bardot).

Je cherche une fonction pour que Excel aille chercher dans une même ligne le prénom, puis le nom, puis remplace/regénère la partie 'prenom.nom' d'une adresse email.


En clair :

Avant execution =
Jean - Dupont - Societe MACHIN - prenom.nom@societemachin.fr

Après execution =
Jean - Dupont - Societe MACHIN - jean.dupont@societemachin.fr

Quelqu'un pourrait m'aider ? C'est assez complexe, j'en suis conscient, mais une aide serait très précieuse. :eek:

Merci d'avance,
Matthieu CASTEL.

:) :) :)
 

Gérard DEZAMIS

XLDnaute Accro
Bonjour Matthieu

Un petit essai en formule

@+ GD [file name=Matthieu_20050726161913.zip size=2572]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Matthieu_20050726161913.zip[/file]
 

Pièces jointes

  • Matthieu_20050726161913.zip
    2.5 KB · Affichages: 13

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Gérard, Matthieu, le Forum

Comme Matthieu demandait 'une fonction, un script, ou une macro..'

Donc gérard a rempli la première part de marché...

Voici pour ma part la Macro :

Sub TheEmailBuilder()
Dim Cell As Range
Dim Plage As Range
Dim DomainEmail As String
Dim UserEmail As String
Dim TmpDomain As Variant

Set Plage = Range('A1:A' & Range('A35000').End(xlUp).Row)

   
For Each Cell In Plage
            UserEmail = Cell.Text & Chr(46) & Cell.Offset(0, 1)
            TmpDomain = Split(Cell.Offset(0, 3), Chr(64))
            DomainEmail = TmpDomain(UBound(TmpDomain))
            Cell.Offset(0, 3) = UserEmail & Chr(64) & DomainEmail
   
Next


End Sub


Pour le Script, je pense pas qu'il y en ait besoin ;)

Bonne Fin d'Aprèm
[ol]@+Thierry[/ol]


PS : Si jen Marie passe par là, ici un exemple concret de 'Split' comme discuté en TChat...

NB : A props de 'Split' => NOn Compatible Excel 97 ou Version Mac ...
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Salut FredL, re Le Fil

Bien vu Gérard pour le Lower Case, pas pensé, quoique en email ça passe les majuscule, mais dans un souci de finition...

Sub TheEmailBuilder()
Dim Cell As Range
Dim Plage As Range
Dim DomainEmail As String
Dim UserEmail As String
Dim TmpDomain As Variant

Set Plage = Range('A1:A' & Range('A35000').End(xlUp).Row)

   
For Each Cell In Plage
            UserEmail = LCase(Cell.Text) & Chr(46) & LCase(Cell.Offset(0, 1))
            TmpDomain = Split(Cell.Offset(0, 3), Chr(64))
            DomainEmail = TmpDomain(UBound(TmpDomain))
            Cell.Offset(0, 3) = UserEmail & Chr(64) & DomainEmail
   
Next


End Sub


Bonne Fin de Journée
[ol]@+Thierry[/ol]
 
M

Matthieu Castel

Guest
Re:Modification/Remplacement de cellules "à la vol

Merci à Gerard, Thierry, et tous les autres membres du forum. :)
Je vais tester la fonction et la macro... j'vous tient au courant.

Matthieu Castel
 
M

Matthieu Castel

Guest
Re:Modification/Remplacement de cellules "à la vol

Salut à tous, le forum ... :)

Déjà, merci à ceux qui aident ici, leur aide est très, très très précieuse. Bravo !

Alors comme prévu tout a bien marché ... sauf pour les gens qui ont des accents ou des caractères spéciaux dans leur prénom ou leur nom, comme Frédéric, François, etc ... pour ça j'ai simplement fait un Rechercher et Remplacer tout bête, puis j'ai remplacé les caractères les plus courants dans les prénoms manuellement ... é, è, ç, etc. :)

Bon maintenant je fais face à un autre problème de taille ... dans cette base, il n'y a pas que des mails dans le format prenom.nom@lasocietebidule.fr ... Je me suis contenté de sélectionner tous ceux qui avaient ce schéma (environ 3000) et les appliquer votre script dessus ...


Mais il y a aussi des mails qui ont le format suivant :

pnom@machintruc.com

pnom c'est une contraction de 'Prénom' et 'Nom'. En clair, pour Jean Dupont, l'email est jdupont@machintruc.com.

Y'a quelques autres formats :

pn@machinbidule.com
Pour Jean dupont ca donne jd@machinbidule.com

Y'a l'inverse de ce qui a été affiché plus haut, à savoir
nom.prenom@machinbidule.com
(dupont.jean@machinbidule.com)

Et même pire
prenomnom@bidule.fr
(jeandupont@bidule.fr)

Et enfin on touche au film d'horreur :
pr.nom@quelquechose.gouv.fr
(je.dupont@quelquechose.gouv.fr) qui en fait prend les deux premères lettres du prénom, puis le nom entier ...


De quoi devenir dingue ... :/ J'utilise la macro de Thierry qui est très très efficace pour ce qui était demandé en haut, mais si quelqu'un pouvait m'aider pour la modifier et l'appliquer aux cas particuliers ci dessus, ce serait extrêmement gentil !

Merci d'avance. :) Et je m'excuse de mon incompétence totale en ce qui concerne la programmation de macros. ;)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Modification/Remplacement de cellules "à la vol

Bonjour matthieu, le Forum

Là je dois filer au bureau, mais je repasserai plus tard dans la journée.

Par contre d'ores et déjà, il faudra bien une intervention manuelle au 'cas par cas' ?

Si toutes ces différente structures de Email Address sont 'pèle mèle' en vrac ?

A moins qu'elle ne soient triée ?, ou encore (le Top) que tu indiques un Index particulier dans une Colonne supplémentaire, par exemple 'E', où tu mettrai '1' pour la structure de Base, '2' pour une structure 'jdupont@machintruc.c', '3' pour 'jd@machinbidule.com'.........)

Bonne journée
@+Thierry
 

Statistiques des forums

Discussions
312 671
Messages
2 090 764
Membres
104 658
dernier inscrit
amomo