EXCEL supprimer doublons

Résolu
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009 - 2 mars 2007 à 15:33
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009 - 4 mars 2007 à 22:14
salut à tous je suis à la recherche d'une fonctino ou d'une macro sur excel 2003 pour supprimer des lignes doublons sur colonne a feuille 1 et 2

en gros je cherche à faire :


si une ligne de la colonne "a" (feuille 1) = à une ligne de la colonne "a" (feuille 2) alors supprimer la ligne feuille 1

merci

16 réponses

cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
4 mars 2007 à 22:14
Merci pour ton aide,

je récapitule le sujet pour ceux qui en auraient besoin :

si une ligne de la colonne "a" (feuille 1) = à une ligne de la colonne "a" (feuille 2) alors supprimer la ligne feuille 1

Macro :

Sub coupe()
Dim i As Integer, j As Integer, DLV1 As Integer, DLV2 As Integer


DLV2 = Sheets(2).Columns(1).Find("", [A65536], , , xlByRows, xlPrevious).Row - 1
DLV1 = Sheets(1).Columns(1).Find("", [A65536], , , xlByRows, xlPrevious).Row - 1


For i = DLV1 To 1 Step -1
    For j = 1 To DLV2
        If Sheets(1).Range("A" & i).Value = Sheets(2).Range("A" & j).Value Then _
            Sheets(1).Rows(i).Delete


               Next j
Next i


End Sub
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
2 mars 2007 à 18:10
Salut,

en gros comme ça je dirai

dim i as integer, j as integer, DLV1 as integer, DLV2 as integer

DLV2 = Sheets(2).Range("A1").End(xlUp).Row
DLV1 = Sheets(1).Range("A1").End(xlUp).Row

For i = DLV1 to 1 step -1
    For j = 1 to DLV2
        If sheets(1).range("A" & i).Value = sheets(2).Range("A" & j).Value Then _
            sheets(1).range("A" & i).Value.Delete Shift:=xlUp
    Next j
Next i

~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

.. pas testé, mais le principe y est

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
2 mars 2007 à 18:11
désolé, j'ai gaffé :

    For j =  1 to DLV2
        If sheets(1).range("A" & i).Value = sheets(2).Range("A" & j).Value Then _
            sheets(1).range("A" & i) <strike>.Value</strike> .Delete Shift: =xlUp
    Next j

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
2 mars 2007 à 19:07
il me met une erreur sur "xlUp"

"erreur de compilation :
instruction incorrecte à l'exterieur d'une procédure"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
2 mars 2007 à 19:13
Bizarre je viens de faire le test, et tout fonctionne comme prévu.
Essaie comme ceci :

    For j = 1 to DLV2
        If sheets(1).range("A" & i).Value = sheets(2).Range("A" & j).Value Then _
            sheets(1).range("A" & i).Delete (xlUp)
    Next j

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
3 mars 2007 à 10:50
il me met l'erreur au debut...

Dim i As Integer, j As Integer, DLV1 As Integer, DLV2 As Integer


DLV2 = Sheets(2).Range("A1").End( xlUp ).Row
DLV1 = Sheets(1).Range("A1").End(xlUp).Row


For j = 1 To DLV2
        If Sheets(1).Range("A" & i).Value = Sheets(2).Range("A" & j).Value Then _
            Sheets(1).Range("A" & i).Value.Delete Shift:=xlUp
    Next j


Next i
0
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
3 mars 2007 à 21:00
je ne comprends pas il me mets touours la meme erreur.

sur quelle version d'excel travailles-tu, j'ai la 2003.

je ne suis pas sur que ça est un rapport mais c'est-on jamais.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
3 mars 2007 à 21:10
Je travaille sur la même.
Essaie cette alternative :

Dim i As Integer, j As Integer, DLV1 As Integer, DLV2 As Integer

DLV2 = Sheets(2).Columns(1).Find("", [A65536], , , xlByRows, xlPrevious).Row - 1
DLV1 = Sheets(1).Columns(1).Find("", [A65536], , , xlByRows, xlPrevious).Row - 1

For i = DLV1 To 1 Step -1
    For j = 1 To DLV2
        If Sheets(1).Range("A" & i).Value = Sheets(2).Range("A" & j).Value Then _
            Sheets(1).Range("A" & i).Delete Shift:=xlUp
    Next j
Next i


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
3 mars 2007 à 22:41
je pense que ça peux marcher, mais j'ai le meme problème que tout à l'heure, la macro plante, mais pas au meme endroit :

Dim i As Integer, j As Integer, DLV1 As Integer, DLV2 As Integer


DLV2 = Sheets(2).Columns(1).Find( "" , [A65536], , , xlByRows, xlPrevious).Row - 1
DLV1 = Sheets(1).Columns(1).Find("", [A65536], , , xlByRows, xlPrevious).Row - 1


For i = DLV1 To 1 Step -1
    For j = 1 To DLV2
        If Sheets(1).Range("A" & i).Value = Sheets(2).Range("A" & j).Value Then _
            Sheets(1).Range("A" & i).Delete Shift:=xlUp
    Next j
Next i
0
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
3 mars 2007 à 22:54
en fait, c'est moi qui m'y prenait tres mal, je ne mettais pas dans le module mais dans worksbook.

le seul hic, c'est que je voudrais que ça me supprime toute la ligne et pas seulement les doublons de la colonne "a"...

Merci pour tes efforts
0
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
4 mars 2007 à 00:11
Ma ligne est composée 5 cellules et chacune des cellules dépend des autres, je veux donc supprimer LA LIGNE c'est à dire les 5 cellules qui la compose.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
4 mars 2007 à 04:44
remplace Sheets(1).Range("A" & i).Delete Shift:=xlUp
par Sheets(1).Row(i).Delete

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
4 mars 2007 à 13:32
erreur d'exécution "438":

propriete ou methode non gerer par cet objet.

si je choisi débogage, il me surligne en jaune :  Sheets(1).Row(i).Delete
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
4 mars 2007 à 13:36
oui  erreur de frappe, c'est pas Row, mais Rows

désolé, on va y arriver !

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_iznogoud47 Messages postés 22 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 19 octobre 2009
4 mars 2007 à 14:08
Merci mille fois pour ton aide,

je vais pouvoir gagner un temps fou au boulot, maintenant j'aimerai savoir si je peux lui donner un racourci clavier et je ne t'embête plus...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
4 mars 2007 à 15:54
Je ne sais plus comment on fait, donc il faut le faire en dégradé :
affiche dans Excel la barre d'outils de VB, fait enregisgtrer (le rond rouge), il te propose macro1 + possibilité d'y affecter un raccourci, choisi le et modifie le nom de la macro, ensuite colle ton code dans cette procédure, et voilà.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0