Demande d'aide pour macro excel
Résolu/Fermé
A voir également:
- Demande d'aide pour macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Si et excel - Guide
- Macro word - Guide
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
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)
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)
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
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
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
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
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
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
Et apparement c'est nickel.
Encore un grand merci, sans ça j'y aurais passé beaucoup de temps.
Merci.
Valentin
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.
Je l'ai lancé hier vers 16h et ce matin elle tournait encore.
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
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?
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?
11 sept. 2007 à 14:05
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?
11 sept. 2007 à 14:29