Mise à jour des doublons
Résoluje travaille sur un projet de creation des comptes mail. Mes champs sont email, nom , prenom,fonction . j'ai des doublons au niveau des emails parce que j'ai les memes nom et prénoms mais les personnes sont bien différentes. Ce que je veux c'est que Si le mail existe deja , je voudrais mettre un 1 , un 2 , un 3 un 4... avant le @ ( une mise à jour au fait)
un exemple de ce que je veux obtenir:
***@***
***@***
***@***
***@***
***@***
5 réponses
Le problème concerne la gestion des doublons d'adresses mail lors de la création de comptes, lorsque le même nom et prénom se répète mais les personnes restent distinctes. Des solutions évoquées prévoient d'ajouter un suffixe numérique avant le signe @, par exemple 1, 2 ou 3, et d'appliquer cette mise à jour lors de la création. Plusieurs approches techniques ont été discutées, notamment une macro VBA utilisant un dictionnaire dans Excel et des requêtes SQL Server pour générer et mettre à jour ces adresses lorsque les enregistrements existent. D'autres échanges ont aussi porté sur la coordination des données existantes et la validation des mises à jour, insistant sur des tests robustes et un contrôle de cohérence avant tout déploiement.
-
bonjour
mets ton fichier dans un lien apres compression avec ci joint sur le site -
Bonjour,
Il faudrait nous dire quel est le langage / programme que tu utilises pour faire ces créations. La façon de te répondre en dépendra fortement...
Xavier-
-
@deloydiloBonjour,
sql sert à stocker les données. Mais tu utilises quel langage pour manipuler ces données ???
A+ -
-
@Utilisateur anonymeJ'utilise du transact-SQL
-
@Reivax962Pour le moment j'ai pas lancé de requête. j'ai juste importé ma base de donnée depuis excel.
Je veux donc faire une mise à jour des doublons au niveau des emails.
Comme je l'ai expliqué, si l'email existe deja, je veux modifier le deuxième et mettre un 1 avant le @
s'il y a un troisième doublon, je veux mettre 2 avant le arobase ainsi de suite. Mais je connais pas le code transact-SQL à ecrire
EXEMPLE
deloydilo(AROBASE)gmail.com
deloydilo1(AROBASE)gmail.com
deloydilo2(AROBASE)gmail.com
deloydilo3(AROBASE)gmail.com
-
-
Contributeurbonjour,
il me semble que tu introduis beaucoup de confusion avec ton idée de prénom et de nom servant à composer l'adresse email. peux-tu décrire plus clairement ce que tu souhaites faire, peut-être en donnant un exemple avant/après? tu nous montres l’après, parce que tu vois l'avant, mais nous ne le voyons pas.
je pense que ce que tu essaies de faire est assez simple à programmer, mais pas à faire via une requête.
dans quel but veux-tu faire cela, quel est précisément ton projet, avec quoi programmes-tu?-
Ok. j'explique depuis le debut.
j'ai une base de donnee Excel avec les champs email, prenom,nom.
j'ai des doublons au niveau des emails. je veux pas supprimer ces doublons mais je veux juste mettre à jour. j'ai importé ma base de donnée dans SQL Server histoire de faire cette manip avec une requete.
voici un exemple de ce que j'ai: deloydilo(AROBASE)gmail.com
deloydilo(AROBASE)gmail.com
deloydilo(AROBASE)gmail.com
deloydilo(AROBASE)gmail.com
si l'email existe,je veux que les autres doublons se mettent à jour de cette façon:
EXEMPLE
deloydilo(AROBASE)gmail.com
deloydilo1(AROBASE)gmail.com
deloydilo2(AROBASE)gmail.com
deloydilo3(AROBASE)gmail.com
Cordialement -
Contributeur@deloydiloje pense que ce que tu essaies de faire est assez simple à programmer, mais pas à faire via une requête.
avec quoi programmes-tu?
c'est sans doute simple à faire dans Excel en VBA. -
-
Contributeur@deloydilopartage ton fichier excel, ou décris comment/où les données (email) y sont installées.
décris aussi ce que tu souhaites que le code VBA fasse: modifier les mails, créer une nouvelle liste de mails uniques, ...
-
-
Contributeursuggestion:
Option Explicit Sub email() Const arob As String = "@" Dim ws As Worksheet Dim emails As Scripting.Dictionary Dim ligne As Range Dim email As String, pn As String, atdom As String, lastd As String, deb As String Dim posa As Integer, lastn As Integer Set ws = Sheets("email") Set emails = New Scripting.Dictionary For Each ligne In ws.UsedRange.Rows email = ligne.Cells(1, 1) Do While emails.Exists(email) posa = InStr(email, arob) pn = Left(email, posa - 1) atdom = Right(email, Len(email) - posa + 1) lastd = Right(pn, 1) If IsNumeric(lastd) Then lastn = lastd deb = Left(pn, Len(pn) - 1) If lastn = 9 Then pn = deb & "01" Else pn = deb & (lastd + 1) End If Else pn = pn & "0" End If email = pn & atdom Loop 'Do While emails.Exists(email) emails.Add email, 0 ligne.Cells(1, 1) = email Next ligne End Sub -
bonjour
as tu resolu ton probleme
si oui marque resolu-
-
Contributeur@deloydilopour marquer résolu, utiliser la roue dentée à droite du titre.
-