OVH Cloud OVH Cloud

supprimer les données

10 réponses
Avatar
RGI
Bonjour

j'ai dans la feuille 1 une base de données avec des Noms; des prénoms;
des adresses; etc etc.....
dans la feuille 2 j'ai des Noms et des prénoms
je dois retirer de la base de données les lignes ayant le Nom et le
prénom de la feuille 2 sachant qu'il est possible que dans la feuille de
données il y ait plusieurs fois
le nom et le prénom de la feuille 2

pouvez-vous m'aiguiller SVP

Merci

RGI

10 réponses

Avatar
Jacky
Bonjour,

j'ai dans la feuille 1 une base de données dans la feuille 2 j'ai des Noms
et des prénoms


Ceci devrait faire:
'-----------
Sub jj()
For Each c In Sheets("Feuil2").Range("a1:a" & Range("a65536").End(3).Row)
For i = Sheets("Feuil1").Range("a65536").End(3).Row To 1 Step -1
If c & c.Offset(0, 1) = Cells(i, 1) & Cells(i, 2) Then
Rows(i).Delete
End If
Next
Next
End Sub
'--------------
--
Salutations
JJ

"RGI" a écrit dans le message de
news:
Bonjour

j'ai dans la feuille 1 une base de données avec des Noms; des prénoms; des
adresses; etc etc.....
dans la feuille 2 j'ai des Noms et des prénoms
je dois retirer de la base de données les lignes ayant le Nom et le prénom
de la feuille 2 sachant qu'il est possible que dans la feuille de données
il y ait plusieurs fois
le nom et le prénom de la feuille 2

pouvez-vous m'aiguiller SVP

Merci

RGI


Avatar
lSteph
Bonjour RGI,

Une idée: ajouter
un champ "verif" ex en colonne c dans la Feuil2 de réf:
¢&"-"&B2

un champ "purge" dans la base à purger
=NB.SI(Feuil2!C:C;Feuil1!A2&"-"&Feuil1!B2)

puis trier sur la valeur duchamp et supprimer tout ce qui est > 0


@+
lSteph
Bonjour

j'ai dans la feuille 1 une base de données avec des Noms; des prénoms; des
adresses; etc etc.....
dans la feuille 2 j'ai des Noms et des prénoms
je dois retirer de la base de données les lignes ayant le Nom et le prénom de
la feuille 2 sachant qu'il est possible que dans la feuille de données il y
ait plusieurs fois
le nom et le prénom de la feuille 2

pouvez-vous m'aiguiller SVP

Merci

RGI


--
- -

Avatar
RGI
Merci Jacky

sur plus de mille données il m'en reste une qui n'est pas traitée ?
traitement environ 4minutes
je garde la formule

RGI

Bonjour,


j'ai dans la feuille 1 une base de données dans la feuille 2 j'ai des Noms
et des prénoms



Ceci devrait faire:
'-----------
Sub jj()
For Each c In Sheets("Feuil2").Range("a1:a" & Range("a65536").End(3).Row)
For i = Sheets("Feuil1").Range("a65536").End(3).Row To 1 Step -1
If c & c.Offset(0, 1) = Cells(i, 1) & Cells(i, 2) Then
Rows(i).Delete
End If
Next
Next
End Sub
'--------------




Avatar
RGI
Merci lSteph

j'ai également fait cette méthode mais comme avec Jacky il me reste des
lignes non traitées
j'ai donc créé une boucle pour supprimer la totalité

Merci à vous deux

Bonjour RGI,

Une idée: ajouter
un champ "verif" ex en colonne c dans la Feuil2 de réf:
¢&"-"&B2

un champ "purge" dans la base à purger
=NB.SI(Feuil2!C:C;Feuil1!A2&"-"&Feuil1!B2)

puis trier sur la valeur duchamp et supprimer tout ce qui est > 0


@+
lSteph
Bonjour

j'ai dans la feuille 1 une base de données avec des Noms; des
prénoms; des adresses; etc etc.....
dans la feuille 2 j'ai des Noms et des prénoms
je dois retirer de la base de données les lignes ayant le Nom et le
prénom de la feuille 2 sachant qu'il est possible que dans la feuille
de données il y ait plusieurs fois
le nom et le prénom de la feuille 2

pouvez-vous m'aiguiller SVP

Merci

RGI





Avatar
Jacky
Re..
il m'en reste une qui n'est pas traitée ?
Majuscule peut-être ??


'---------
If UCase(c & c.Offset(0, 1)) = UCase(Cells(i, 1) & Cells(i, 2)) Then
'----------
--
Salutations
JJ

"RGI" a écrit dans le message de
news:
Merci Jacky

sur plus de mille données il m'en reste une qui n'est pas traitée ?
traitement environ 4minutes
je garde la formule

RGI

Bonjour,


j'ai dans la feuille 1 une base de données dans la feuille 2 j'ai des
Noms et des prénoms



Ceci devrait faire:
'-----------
Sub jj()
For Each c In Sheets("Feuil2").Range("a1:a" & Range("a65536").End(3).Row)
For i = Sheets("Feuil1").Range("a65536").End(3).Row To 1 Step -1
If c & c.Offset(0, 1) = Cells(i, 1) & Cells(i, 2) Then
Rows(i).Delete
End If
Next
Next
End Sub
'--------------






Avatar
lSteph
RGI a formulé :
lignes non traitées
des Espaces, l'orthographe, la CaSse.?

sinon si tu as mis la formule jusqu'au bout....vois pas pourquoi.

@+

--
- -

Avatar
Garette
Bonjour,

Quelques petites modifs :
ClearContents au lieu de Delete ça devrait aller plus vite (+ un tri à la
fin pour compacter tout)
Un démarrage en A2 pour éviter de traiter les nom de champs de la base s'il
y en a.

Sub jj2()
x = Sheets("Feuil1").Range("IV1").End(xlToLeft).Column
For Each c In Sheets("Feuil2").Range("a2:a" & Range("a65536").End(3).Row)
For i = Sheets("Feuil1").Range("a65536").End(3).Row To 2 Step -1
If c & c.Offset(0, 1) = Cells(i, 1) & Cells(i, 2) Then
Sheets("Feuil1").Range(Cells(i, 1), Cells(i, x)).ClearContents
End If
Next
Next
Range("A1", Cells(Sheets("Feuil1").Range("a65536").End(3).Row, x)).Sort
Key1:=Range("A1")
End Sub
Avatar
RGI
Pour les même raisons que j'ai stipulé à Jacky au dessus
le Hoeß par exemple le ß n'est pas reconnu et me provoque un oubli
Merci encore

RGI a formulé :
lignes non traitées
des Espaces, l'orthographe, la CaSse.?

sinon si tu as mis la formule jusqu'au bout....vois pas pourquoi.

@+




Avatar
RGI
En ajoutant Application.ScreenUpdating = False / True
je gagne aussi un peu de temps mais pas très significatif
en plus toutes les lignes avec des formules se retrouvent en fin de base

Merci de l'intervention

@+++

Bonjour,

Quelques petites modifs :
ClearContents au lieu de Delete ça devrait aller plus vite (+ un tri à la
fin pour compacter tout)
Un démarrage en A2 pour éviter de traiter les nom de champs de la base s'il
y en a.

Sub jj2()
x = Sheets("Feuil1").Range("IV1").End(xlToLeft).Column
For Each c In Sheets("Feuil2").Range("a2:a" & Range("a65536").End(3).Row)
For i = Sheets("Feuil1").Range("a65536").End(3).Row To 2 Step -1
If c & c.Offset(0, 1) = Cells(i, 1) & Cells(i, 2) Then
Sheets("Feuil1").Range(Cells(i, 1), Cells(i, x)).ClearContents
End If
Next
Next
Range("A1", Cells(Sheets("Feuil1").Range("a65536").End(3).Row, x)).Sort
Key1:=Range("A1")
End Sub



Avatar
Garette
En fait, la premiere version va plus vite.
Le fait de supprimer les lignes avec Delete diminue la zone à traiter =>
accélération.