Demande d'aide pour macro excel

Résolu/Fermé
ricquo - 11 sept. 2007 à 10:43
 ricquo - 12 sept. 2007 à 11:47
Bonjour,
je suis nouveau et énormément perdu, je me permets de vous demander comment faire pour que excel compare deux feuille contenant trois colonnes chacune ; et qu'il me supprime les lignes qui ce trouvent en doublons sur les deux feuilles, afin qu'il ne me reste que les lignes uniques présentes dans chacune des feuilles?
J'ai recherché sur le forum avec doublon, et comparaison, je trouve pas mal de trucs mais je n'y comprend rien.
Si une bonne âme pouvait m'aider un peu ce serait sympa!
A voir également:

8 réponses

mdonnate Messages postés 76 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 17 mai 2011 45
11 sept. 2007 à 13:18
Sub Macro1()

Dim i As Integer, j As Integer
Dim Dernlign1 As String, Dernlign2 As String
Dernlign2 = Sheets("Feuil2").UsedRange.Row + Sheets("Feuil2").UsedRange.Count - 1
Dernlign1 = Sheets("Feuil1").UsedRange.Row + Sheets("Feuil1").UsedRange.Count - 1

For i = Dernlign2 To 2 Step -1

For j = Dernlign1 To 2 Step -1

If Sheets("Feuil2").Cells(i, 1) = Sheets("Feuil1").Cells(j, 1) And Sheets("Feuil2").Cells(i, 2) = Sheets("Feuil1").Cells(j, 2) And Sheets("Feuil2").Cells(i, 3) = Sheets("Feuil1").Cells(j, 3) Then
Sheets("Feuil1").Cells(j, 1).EntireRow.Delete
End If
Next
Next

End Sub

Voilà, ça devrait fonctionner, remplace simplement "Feuil1" et "Feuil2" par les noms de tes feuilles (n'oublie pas les " autour")

Autrement, si tu rajoutes des lignes vierges en lignes A, B, etc... il faudra modifier les arguments For, en mettant To 3 par exemple, si la première ligne de données à comparer se trouve en C (4 pour D, 5 pour E, etc)
1
Je vous remercie encore pour cet aide précieuse, mais je ne vois pas comment l'enregistrer (j'ais créer une nouvelle macro (macro1) où j'ais coller le programme.

Mais un message d'erreur apparaît en me signalant erreur de synthaxe (j'ai renommé mes feuilles feuil1 et feuil2)
cette ligne apparaît en rouge :

Dernlign2 = Sheets("Feuil2").UsedRange.Row + Sheets("Feuil2").UsedRange.Count - 1 Dernlign1 = Sheets("Feuil1").UsedRange.Row + Sheets("Feuil1").UsedRange.Count - 1

M'y suis-je mal pris ?
que dois-je faire?
0
mdonnate Messages postés 76 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 17 mai 2011 45 > ricquo
11 sept. 2007 à 14:29
Apparemment vous avez placé les deux définition sur une seule ligne. Essayez de ne mettre qu'une égalité par ligne...
0
mdonnate Messages postés 76 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 17 mai 2011 45
11 sept. 2007 à 10:56
Bonjour,

Tes 3 colonnes sont-elles situées aux mêmes endroits sur les 2 feuilles?
Ta macro doit-elle comparer l'intégralité des 2 lignes pour déterminer si elles sont identiques?
Veux tu en plus supprimer les lignes vierge supprimées par la comparaison?

Maxime
0
sur la feuille 1 tu trouve ça :
A B C
1 Qty Affaire Code GPAO
2 4 P50066 3CBU0027
3 4 P50072 3CBU0027
4 2 P50104 3CBU0027
5 1 P50065 3CBU0028
6 5 P50066 3DJF0042
7 5 P50065 3DJF0061
8 5 P50066 3DJF0124
9 10 P50068 3PGU0001
10 2 P50068 4AAA6447
11 2 P50070 4EDG0277
12 4 P50067 4EDG0279
13 1 P50066 5ANZ0003
14 2 P50065 5BFC0021

et sur la feuille 2 :
A B C
1 Qty Affaire Code GPAO
2 4 P50066 3CBU0027
3 4 P50072 3CBU0027
4 2 P50104 3CBU0027
5 5 P50066 3DJF0042
6 5 P50066 3DJF0124
7 10 P50068 3PGU0001
8 2 P50068 4AAA6447
9 2 P50070 4EDG0277
10 4 P50067 4EDG0279
11 1 P50066 5ANZ0003
12 2 P50070 5BHA0023

Donc, oui mes trois colonnes ce trouvent au mêmes endroits, et ma macro doit comparer la ligne entière car les colonnes A et B sont des renseignement de la colonne C, le code GPAO est souvent redondant (même code pour même affaire, mais quantité différente ; ou même code et même quantité, mais pas la même affaire).

J'ai même ,sur les feuilles, des lignes redondantes avec la même quantité pour la même affaire avec le même code GPAO, mais ce n'est pas une erreur (c'est dûe à un mise à jour des besoins à des dates ultérieures, je dois effectuer une vérification afin de voir si rien n'as été oublier (ma feuille 1 correspond à ce qu'on veux et la feuille 2 à ce qu'on a acheté, et beaucoup d'erreurs s'y sont glissées).

En fait je recherche quelque chose qui me permetterais d'épurer la feuille 1, sachant que toutes les lignes présentes dans la feuilles 2 sont forcément dans ma feuille 1 et que je désir les supprimer.

NB : les lignes sont colorés cela pose-t-il un problème ?

P.S : Merci pour votre réponse rapide.

Valentin
0
Je vous remercie pour votre réponse qui m'a été d'un grand secour !
0

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

Posez votre question
Oui, c'était ça car j'avais fait un copier coller de outlook.
Et apparement c'est nickel.
Encore un grand merci, sans ça j'y aurais passé beaucoup de temps.
Merci.

Valentin
0
Je me permets de revenir car j'ai un petit souci : la macro s'éxécute mais elle ne s'arrête jamais.
Je l'ai lancé hier vers 16h et ce matin elle tournait encore.
0
mdonnate Messages postés 76 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 17 mai 2011 45
12 sept. 2007 à 11:19
Vous pouvez essayer la fonction:

Application.ScreenUpdating = False

A placer en dessous des Dim, cette fonction permet de désactiver la mise à jour de l'écran, et donc d'accélérer le traitement.

Votre tableau fait combien de lignes?
0
Le plus grand tableau (celui que je désir épurer) fait 662 lignes et le deuxième fait 537.
0