EXCEL supprimer doublons [Résolu]

cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 2 mars 2007 à 15:33 - Dernière réponse : cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention
- 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
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 4 mars 2007 à 22:14
3
Merci
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

Merci cs_iznogoud47 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

Commenter la réponse de cs_iznogoud47
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 2 mars 2007 à 18:10
0
Merci
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"
<!--
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 2 mars 2007 à 18:11
0
Merci
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"
<!--
Commenter la réponse de mortalino
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 2 mars 2007 à 19:07
0
Merci
il me met une erreur sur "xlUp"

"erreur de compilation :
instruction incorrecte à l'exterieur d'une procédure"
Commenter la réponse de cs_iznogoud47
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 2 mars 2007 à 19:13
0
Merci
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"
<!--
Commenter la réponse de mortalino
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 3 mars 2007 à 10:50
0
Merci
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
Commenter la réponse de cs_iznogoud47
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 3 mars 2007 à 21:00
0
Merci
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.
Commenter la réponse de cs_iznogoud47
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 3 mars 2007 à 21:10
0
Merci
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"
<!--
Commenter la réponse de mortalino
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 3 mars 2007 à 22:41
0
Merci
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
Commenter la réponse de cs_iznogoud47
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 3 mars 2007 à 22:54
0
Merci
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
Commenter la réponse de cs_iznogoud47
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 4 mars 2007 à 00:11
0
Merci
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.
Commenter la réponse de cs_iznogoud47
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 mars 2007 à 04:44
0
Merci
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"
<!--
Commenter la réponse de mortalino
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 4 mars 2007 à 13:32
0
Merci
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
Commenter la réponse de cs_iznogoud47
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 mars 2007 à 13:36
0
Merci
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"
<!--
Commenter la réponse de mortalino
cs_iznogoud47 22 Messages postés jeudi 17 novembre 2005Date d'inscription 19 octobre 2009 Dernière intervention - 4 mars 2007 à 14:08
0
Merci
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...
Commenter la réponse de cs_iznogoud47
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 mars 2007 à 15:54
0
Merci
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"
<!--
Commenter la réponse de mortalino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.