suppression de données

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
c
choufi_51
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 18 mai 2017
Version d'Excel : 2013

Message par choufi_51 » 18 mai 2017, 09:42

Bonjour à tous,

je ne suis pas une grande spécialiste d'excel, même si je me débrouille, et j'ai besoin de supprimer certaines données d'un fichier, selon une liste. J'ai déjà chercher sur plusieurs forum un peu partout sur le web, et je ne trouve pas la formule "clé en main".
Je vous explique concrètement :
D'un coté j'ai une base de données de contacts, avec une colonne nom, une colonne prénom, une colonne mail, etc... D'un autre coté, j'ai une liste d'adresse mail. J'ai besoin de supprimer de la base de donnée, les adresses mails qui sont dans la liste. Seulement supprimer le mail de la colonne mail. Je veux garder le contact dans la base, sans son adresse mail.

Quelqu'un aurait-il la gentillesse de m'expliquer comment faire ?

Merci par avance à ceux qui pourront m'aider. Vous me serez d'une très grande aide.

Bonne journée

C.
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 4'047
Appréciations reçues : 212
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 18 mai 2017, 09:48

Bonjour Choufi, bonjour le forum,

Devant autant de précision je ne peux que rester vague dans mes explications...
Donc deux boucles. Une première sur la liste des emails, une seconde sur la colonne des emails de ta base. Une condidition : Si l'email de la base est le même que l'email de la liste, alors on efface la cellule de la base et, éventuellement, on sort de la boucle 2 (si ta base n'a pas de doublons dans les emails)...
Voilí, voilou, si tu veux un code précis il nous faudra des renseignements précis...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
c
choufi_51
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 18 mai 2017
Version d'Excel : 2013

Message par choufi_51 » 18 mai 2017, 09:58

Merci ThauThème pour votre réponse,
en effet j'aimerais que vous puissiez me dire clairement comment faire, avec une formule par exemple.
Quelles informations dois-je vous fournir pour que vous puissiez m'aider plus précisément ?
les 2 fichiers sont des fichiers séparés, mais je peux bien entendu copier le fichier "liste" dans une feuille du fichier "base" si c'est plus simple.
Je peux aussi vous donner mon fichier pour que vous y intégriez directement la formule ou VBA ?
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 4'047
Appréciations reçues : 212
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 18 mai 2017, 10:08

Re,

Par formule je ne sais pas faire. Je vais te proposer une solution VBA (par macro).
• Il faut le nom (avec extension) et le chemin d'accès de chaque fichier (facultatif si, quand tu lances la macro, les deux fichiers sont ouverts)
• le nom de l'onglet contenant la liste
• le nom de l'onglet contenant la base de données
• l'adresse de la première cellule de la liste (A1 par exemple)
• l'adresse de la première cellule contenant les email dans la base de données (D1 par exemple).

Avec ça je pourrai de proposer une macro à placer soit dans le base de données soit dans le fichier liste. C'est toi qui me dit. Attention, le fichier contenant la macro prendra l'extension xlsm si ta version d'Excel est postérieure à 2003... Pour lancer la macro il te suffira de faire la combinaison de touche [Alt]+[F8] et de choisir Macro1 dans la liste...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
c
choufi_51
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 18 mai 2017
Version d'Excel : 2013

Message par choufi_51 » 18 mai 2017, 10:34

Ah oui c'est vraiment très précis ! Je ne savais pas que ça fonctionnait comme ça.
Alors, concernant les infos :

• Il faut le nom (avec extension) et le chemin d'accès de chaque fichier (facultatif si, quand tu lances la macro, les deux fichiers sont ouverts)
- nom du fichier : contact-fichier de travail.xlsx
- j'ai créer un fichier commun, avec un onglet pour la liste et un autre pour la base. je ferais mes copiés/collés.Dis moi si ça ne convient pas.
• le nom de l'onglet contenant la liste
- nom de l'onglet : mail à enlever de la base
• le nom de l'onglet contenant la base de données
- nom de l'onglet : base de données
• l'adresse de la première cellule de la liste (A1 par exemple) : A1
• l'adresse de la première cellule contenant les email dans la base de données (D1 par exemple) : A1

pour info j'ai excel 2013

Ca te convient ?
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 4'047
Appréciations reçues : 212
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 18 mai 2017, 11:38

Re,

Voici le code :
Sub Macro1()
Dim L As Worksheet 'déclare la variable L (onglet Liste)
Dim B As Worksheet 'déclare la variable B (onglet Base)
Dim TVL As Variant 'déclare la variable TVL (Tableau des Valeurs de la Liste)
Dim TVB As Variant 'déclare la variable TVB (Tableau des Valeurs de la Base)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set L = Worksheets("mail à enlever de la base") 'définit l'onglet L
Set B = Worksheets("base de données") 'définit l'onglet B
TVL = L.Range("A1").CurrentRegion 'définit le tableau des valeurs de la liste TVL
TVB = B.Range("A1").CurrentRegion 'définit le tableau des valeurs de la base TVB
For I = 1 To UBound(TVL, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs de la liste TVL
    For J = 1 To UBound(TVB, 1) 'boucle 2 : sur toutes les lignes J du tableau des valeurs de la base TVB
        'si les deux valeurs sont identiques, efface la cellule ligne J colonne 1 de l'onget B
        If TVL(I, 1) = TVB(J, 1) Then B.Cells(J, 1).Value = ""
    Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
MsgBox "les données ont été traitées !" 'message
End Sub

Voici la procédure pour le mettre en place et le lancer :
• tu copies le code
• tu ouvres ton fichier contact-fichier de travail.xlsx
• tu ouvres VBE (Visual Basic Editor) avec le raccourci clavier [Alf]+[F11]
• dans VBE, menu Insertion/Module
• là où clignote le curseur, tu colles le code
• tu fermes VBE ([ALT]+[F11])
• tu enregistres-sous ton fichier avec l'extension xlsm
• tu ouvres la boîte de dialogues Macro avec le raccourci clavier [Alt]+[F8]
• tu double-clique sur Macro1
le code s'exécute...

Si tu as un problème, envoie le fichier...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
c
choufi_51
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 18 mai 2017
Version d'Excel : 2013

Message par choufi_51 » 18 mai 2017, 12:09

Purée... Ca marche !!!!
Merci infiniment ThauThème...!!!
Ca fait des semaines, pour ne pas dire des mois, que je bidouille comme je peux pour faire ça manuellement, et je galérais vraiment beaucoup. Ca va m'être vraiment très trsè très utile. Merci vraiment.

Devant ton aisance, je me dis qu'l y a d'autre fonction qui me serait bien utile aussi... J'abuserai si je te demandais 2 autres macros ? Elles sont du même type... A priori pour toi ça va être un jeu d'enfant... Je me permets de t'expliquer ce dont j'aurais besoin, si jamais... :
- une macro pour mettre en évidence (par exemple sur fond vert, ou bleu, comme tu veux), dans la même base de données, les mails qui sont contenu dans la liste. Si possible en gardant le même fichier de travail, le nom de l'onglet base de données ne change pas, le nom de l'onglet de la liste serait : mail à identifier dans la base
- une macro pour ajouter à la base de données, les mails qui sont dans la liste et qui ne sont pas déjà dans la base, en les mettant par exemple sur fond rouge pour que je puisse les identifier. ici le nom d'onglet de la liste serait : mail à ajouter dans la base.

voilà, si tu peux, ça serait vraiment top.

encore merci pour celle-ci.

C.
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 4'047
Appréciations reçues : 212
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 18 mai 2017, 12:15

Re,

On en reparle après la pause car il y des choses pas claires...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
c
choufi_51
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 18 mai 2017
Version d'Excel : 2013

Message par choufi_51 » 18 mai 2017, 13:51

Dis moi ce que je dois éclaircir
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 4'047
Appréciations reçues : 212
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 18 mai 2017, 14:02

Re,

Dans ton premier post tu parlais d'une base de données avec plusieurs colonnes et donc plusieurs données. Puis on n'a plus parlé que de la colonne A contenant les email. Que sont devenus les autres ? je dis cela car si tu veux mettre en évidence on peut mettre de la couleur uniquement su la cellule de l'email ou sur la ligne de données contenant la cellule de l'email...
Ensuite pour ajouter, on n'ajoute que l'email ? Et les autre données ?...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message