Supprimer des lignes sous conditions

marieg58 -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Je voudrais, dans un tableau, supprimer les lignes qui ont la même valeur en colonne a et colonne B.
La colonne a contient des codes article, la colonne B des prix, la colonne C une date.
Je veux supprimer toutes les lignes qui ont les mêmes code article etmêmes dates.
J'ai fait ce code mais ca ne fonctionne absolument pas.

Sheets("feuil5").Select
Range("a1").Select

Dim feuille As Worksheet
Set feuille = ActiveSheet
With feuille
For i = .UsedRange.Rows.Count To 1 Step -1
j = i + 1
If (.Cells(i, 1) & .Cells(i, 2)) = (.Cells(j, 1) & .Cells(j, 2)) Then
.Range(.Cells(j, 1), .Cells(j, 4)).ClearContents
End If
Next i
End With

Je suis débutante
merci de votre aide

A voir également:

3 réponses

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Salut,
Sans avoir tester, remplace :
If (.Cells(i, 1) & .Cells(i, 2)) = (.Cells(j, 1) & .Cells(j, 2)) Then
par :
If .Cells(i, 1) = .Cells(j, 1) And .Cells(i, 2) = .Cells(j, 2) Then
--
Franck P
0
marieg58
 
Merci mais ca ne fonctionne pas tout a fait correctement.
Au bout d'un moment il s'arrete et j'ai la fenete débogage
Et enfin je voudrais supprimer les 2 lignes identiques, mais il ne supprime que la deuxième
merci de votre aide
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Pour supprimer entièrement 2 lignes :
.Rows(i & ":" & j).EntireRow.Delete
!!! ATTENTION travaillez sur une copie de votre classeur car cette macro contient un Delete... Si ça foire, ça supprime!!!!!

Pourquoi ça s'arrête? Que dis le débogage? Désolé, je ne suis pas devin....
0
marieg58
 
Désolée je ne suis pas très douée, je débute, en fait j'ai un gros fichier à traiter et je ne m'en sors pas.
En fait, au bout d'un moment, J'ai une boite de dialogue "Erreur 13 Incomptabilité de type" et il surligne la ligne
If .Cells(i, 1) = .Cells(j, 1) And .Cells(i, 2) = .Cells(j, 2) Then

J'ai modifié le code comme suit :
Sub Macro()
Sheets("feuil5").Select
Range("a1").Select
Dim feuille As Worksheet
Set feuille = ActiveSheet
With feuille
For i = .UsedRange.Rows.Count To 1 Step -1
j = i + 1
If .Cells(i, 1) = .Cells(j, 1) And .Cells(i, 2) = .Cells(j, 2) Then
.Rows(i & ":" & j).EntireRow.Delete
End If
Next i
End With
End Sub

Mais cette fois, il tourne dans le vide. J'ai encore dû faire une erreur
merci
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
salut,
Sans voir le fichier, il va être difficile de continuer. Ta macro n'a pas l'air mauvaise...
A tout hasard, la feuille est bien triée ?
0