Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Renvoie de texte pour reformer un email

18 réponses
Avatar
géjoun
Bonjour,

A partir d'un prénom et du nom inscrit dans une même cellule, je voudrais
renvoyer dans une autre cellule le prénom puis le nom de cette personne en
minuscule, le tout séparé par un point et suivi de @mondomaine.com; pour
faire afficher son email dans une autre cellule sous la forme (par exemple)
:

- En A1 : Jean DUPONT
- En B1 : jean.dupont@monemail.com

Je suis arrivé à cette formule pour ça :
=MINUSCULE((GAUCHE(A1;TROUVE(" ";A1)-1))&"."&(DROITE(A1;TROUVE("
";A1)-1)))&"@monemail.com"


Mais j'aurais aimé savoir si il était possible de faire plus court et plus
simple.

Merci!

--
géjoun

8 réponses

1 2
Avatar
géjoun
FFO nous expliquait:

Rebonjour à toi

Tout en gardant ta formule newlook simplifié tu peux juste en
sélectionnant ta colonne A utiliser le rechercher/remplacer pour
chaque lettre avec accent Celà évitera une usine à gaz pour juste une
question d'accent dont quelques éventuels prénoms seraient détenteur



Bonjour,

J'ai aussi pensé au rechercher/remplacer, mais je voulais queqlue chose qui
se face tout seul; qu'on est pas à intevenir par une commande.
Mais la formule me va bien! :-)

--
géjoun
Avatar
géjoun
FFO nous expliquait:

Rebonjours à toi

Autre solution celle d'un code qui traite tout (espace, accent sur le
"e", adresse url) que tu passes à loisir par un bouton
Plus besoin de formule juste la liste des Noms en colonne A avec
l'adresse URL que ce code mettra en colonne B :

i = 2
Do While i < Range("A65535").End(xlUp).Row + 1
For j = 1 To Len(Range("A" & i))
Lettre = Mid(Range("A" & i), j, 1)
If Mid(Range("A" & i), j, 1) = " " Then
Lettre = "."
End If
If Mid(Range("A" & i), j, 1) = "é" Or Mid(Range("A" & i), j, 1) = "è"
Then Lettre = "e"
End If
Nom = Nom & Lettre
Next
Range("B" & i) = LCase(Nom) & "@monemail.com"
Nom = ""
i = i + 1
Loop
End Sub

Peut être mieux pour toi

Dis moi !!!!!



Comme indiqué dans ma réponse à Modeste, trop compliqué pour pas mal
d'utilisateurs qui utiliseront le fichier, et qui penseront pas forcément à
cliquer sur le bouton.
Je vais garder la formule, car l'email renvoyé est plus là à titre
d'information, donc pour les quelques utilisateurs qui ont un prénom avec un
accent et dont l'email sera "tronqué", je vais partir sur le principe
qu'avec un peu de jugeote, le destinataire du fichier trouvera de lui-même
que l'accent est de trop, ou appelera pour confirmation.

--
géjoun
Avatar
FFO
Rebonjour à toi

A ce code tu peux associer celui-ci à mettre dans le VBA de la feuille qui
scrute en colonne A le moindre "é" ou "è" invitant dans cette hypothèse
l'utilisateur à l'utiliser pour nettoyer
Compte tenu de la simplicité de l'action je ne vois où serait leur gène :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
On Error Resume Next
Ligne = 0
Ligne = Range("A1", "A" & Range("A65535").End(xlUp).Row).Find(What:="é",
After:=Range("A1"), LookIn:=xlValues, _
LookAt:=xlPart).Row
Ligne = Range("A1", "A" & Range("A65535").End(xlUp).Row).Find(What:="è",
After:=Range("A1"), LookIn:=xlValues, _
LookAt:=xlPart).Row
If Ligne <> 0 Then
MsgBox ("Vous avez des caractères avec accent veuillez activer le bouton
Traitement")
End If
End If
End Sub

Qu'en penses tu ????
Avatar
FFO
Rebonjour à toi

Tu peux aussi faire un mixte des 2
Tes formules simplifiées avec dans le VBA de la feuille ce code pour
nettoyer automatiquement la colonne A lors de toutes saisies sans une
quelconque action particulière de la part de l'utilisateur :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
On Error Resume Next
Range("A1", "A" & Range("A65535").End(xlUp).Row).Replace What:="é",
Replacement:="e", LookAt:=xlPart
Range("A1", "A" & Range("A65535").End(xlUp).Row).Replace What:="è",
Replacement:="e", LookAt:=xlPart
End If
End Sub

Peut être l'idéale

A toi de voir
Avatar
géjoun
FFO nous expliquait:

Rebonjour à toi

Tu peux aussi faire un mixte des 2
Tes formules simplifiées avec dans le VBA de la feuille ce code pour
nettoyer automatiquement la colonne A lors de toutes saisies sans une
quelconque action particulière de la part de l'utilisateur :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
On Error Resume Next
Range("A1", "A" & Range("A65535").End(xlUp).Row).Replace What:="é",
Replacement:="e", LookAt:=xlPart
Range("A1", "A" & Range("A65535").End(xlUp).Row).Replace What:="è",
Replacement:="e", LookAt:=xlPart
End If
End Sub

Peut être l'idéale

A toi de voir



Re-bonjour,

Merci de te donner toute cette peine! :-)
Effectivement, c'est vrai qu'un mixte des deux résoudarit tous les
problèmes, par contre, est-ce possible d'indiquer à la macro de ne cibler
qu'une seule cellule, vu que ma demande se résume à ça?

Merci!
--
géjoun
Avatar
FFO
Rebonjour à toi

On peux ne cibler que la cellule qui change
Le risque est que si pour une raison pour une autre alors que la nouvelle
saisie est en place le code n'a pas pu s'effectué correctement elle restera
non corrigé avec un accent potentiel tant qu'elle ne sera pas à nouveau
modifiée
De plus si l'utilisateur réalise un copié collé de plusieur cellules cette
procédure évennementielle ne pourra faire face à l'intégralité de ces
cellules modifiées et risque fort de ne pas agir sur l'ensemble de ces
cellules
Tout celà pour un gain de temps non significatif
Ce code en l'état agit sur l'ensemble de la colonne à chaque modification
d'une des cellules de la colonne et donc peux se permettre un défaillance qui
de toute façon sera comblée à la modification suivante d'une des cellules de
cette colonne
De plus il ne souffre pas d'un copié collé en masse son action déclenchée
par la première cellule étant suffisante pour un nettoyage complet

Fais des essais et donnes moi ton sentiment !!!!
Avatar
Caetera
> Effectivement, c'est vrai qu'un mixte des deux résoudarit tous les problèmes,
par contre, est-ce possible d'indiquer à la macro de ne cibler qu'une seule
cellule, vu que ma demande se résume à ça?



C'est PAS UNE MACRO qu'il faut utiliser mais une fonction perso (voir dans
celles qui t'ont été proposé plus haut)
Le calcul deviendrait donc :
=MINUSCULE(SUBSTITUE(fonctionPerso(A1);" ";"."))&"@monemail.com"

Pour ce qui est des espaces multiples : aucune solution miracle

Etc
Avatar
géjoun
Caetera <EtiennePloufCahé@wanadoo.fr> nous expliquait:

Effectivement, c'est vrai qu'un mixte des deux résoudarit tous les
problèmes, par contre, est-ce possible d'indiquer à la macro de ne
cibler qu'une seule cellule, vu que ma demande se résume à ça?



C'est PAS UNE MACRO qu'il faut utiliser mais une fonction perso (voir
dans celles qui t'ont été proposé plus haut)
Le calcul deviendrait donc :
=MINUSCULE(SUBSTITUE(fonctionPerso(A1);" ";"."))&"@monemail.com"

Pour ce qui est des espaces multiples : aucune solution miracle



Bonjour,

Bon, je crois que cette fois-ci, j'ai assez de solutions! :-)
A la base, ça doit juste éviter aux utilisateurs d'avoir à retaper leur
adresse email, donc je vais pas trop me casser la tête pour une ou deux
personnes donct le nom pourrait poser problème (le mien part exemple!
:-) ).

Merci à tous!
--
géjoun
1 2