Vba excel : besoin d'aide.

Résolu
Juliette -  
 Juliette -
Bonjour à tous,

Je débute sur excel et j'ai besoin de faire une macro VBA que je ne réussi pas à faire malgré l'aide excel assez bien faite.

En fait j'ai deux feuille (Feuil1 et Feuil2) avec deux listes, je voudrais creer une macro qui me permet d'effacer les lignes de la Feuil1 également présentes en Feuil2.

Merci d'avance pour ceux qui m'aideront ou essayeront de le faire.

A voir également:

4 réponses

jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
re bonjour,

je ne sais pas trop, ets vous sûr qu'il n'y a qu'une seule occurance pour chaque ligne de la page 1 en page 2?

si vous ne l'êtes pas, il faudrait voir cette ligne :

If idem = 1 Then

en la transformant en

If idem > 0 Then

a+

jéjé
1
Juliette
 
Je me suis mal expliqué. Les dix lignes présentes en feuille 2 égale à la ligne xmax ont été effacé mais la procédure s'arrete la.

Après moultes essais j'en suis arrivé à une petite conclusion. En fait si en feuille 2 a liste est : 1 - 2 - 3 - 4 - 5 il n'effacera que les 5 de la feuille 1 et si c'est 5-4-3-2-1 que les un. Il ne prend que la ligne fin de la liste de la feuille 2.
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
essaie ca :

Private Sub CommandButton3_Click()


xmax = Sheets("Factures en attente").Range("B65536").End(xlUp).Row
imax = Sheets("Archives régularisations").Range("B65536").End(xlUp).Row


For x = 2 To xmax
For I = 2 To imax

idem = 0
j = 2

If Worksheets("Archives régularisations").Cells(I, j) = Worksheets("Factures en attente").Cells(x, j) Then
idem = idem + 1
End If


If idem = 1 Then
Worksheets("Factures en attente").Unprotect (123)
Worksheets("Factures en attente").Rows(x).Delete
x = x - 1
End If
next
Next

End Sub
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

Excusez l'incruste!

Juliette:
Les doublons feuil1-feuil2 sont ils sur la m^me ligne ?
faut il vérifier toute les 9 colonnes où il y-a-t-il une colonne "clé" (par exemple si la valeur colonne A feuille 1 est retrouvée dans la colonne A feuille 2, on supprime la ligne) ?

au besoin met un extrait de ton classeur sans données confidentielles sur
http://cijoint.fr/
et colles le lien proposé dans ta réponse
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Bonjour michel

Je n'ai pas l'impression que les doublons soient sur la meme ligne, et s'ils le sont au debut, ils ne peuvent plus l'etre au milieu car les lignes sont supprimées au fur et a mesure que la macro trouve les doublons.

a+
jéjé
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
bonjour Jejelrfou
Tu ne crois pas que ce serait plutôt à Juliette de répondre? :-D
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
re,

ci dessous code à essayer

Sub effacer_doublons()
Dim derlig As Integer, cptr As Integer, cptr_t As Integer
Dim tablo
ReDim tablo(0)

With Sheets(1)
    derlig = .Range("B30000").End(xlUp).Row

For cptr = 1 To derlig
    If Application.CountIf(Sheets(2).Columns(2), .Cells(cptr, 2)) Then
        tablo(cptr_t) = cptr & ":" & cptr
        cptr_t = cptr_t + 1
        ReDim Preserve tablo(cptr_t)
    End If
Next
ReDim Preserve tablo(cptr_t - 1)

Application.ScreenUpdating = False
.Range(Join(tablo, ",")).Delete
End With
End Sub


peut être remplacer sheets(X) par sheets("nomdelonglet")
1
Juliette
 
Parfait, celui-ci fonctionne à merveille. Merci beaucoup à tous les deux, vous m'enlevez une épine bien douloureuse du pied.

Bonne journée à vous !!!
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Bonjour,

J'aurais besoin d'un peu plus d'infos pour resoudre ton pb :

combien de lignes sont à traiter?
combien de colonnes doivent etre inspectée?

merci

jéjé
0
Juliette
 
En fait, le nombre de ligne est variable mais n'excede pas les 1000. C'est trop ? Les colonnes si possible 9.

Merci de prendre du temps pour mon problème jéjé.
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
re bonjour,

Voici ce que j'ai fait :

A vous de modifier imax et xmax. attention, des chiffres trops importants peuvent ralentir votre pc.


Sub compares()
'xmax est le nombre de ligne dans la feuille1
'imax est le nombre de ligne dans la feuille1
xmax = 100
imax = 100
For x = 1 To xmax

For i = 1 To imax
idem = 0
For j = 1 To 9
If Worksheets("feuil2").Cells(i, j) = Worksheets("feuil1").Cells(x, j) Then
idem = idem + 1
End If
Next

If idem = 9 Then
Worksheets("feuil1").Rows(x).Delete
x = x - 1
End If
Next
Next

End Sub
0
Juliette
 
Merci jéjé, j'ai adapté le code à mon fichier et malhereusement seul une ligne a été effacé la dernière de la liste imax. Voyez-vous une possible explication ?

Private Sub CommandButton3_Click()


xmax = Sheets("Factures en attente").Range("B65536").End(xlUp).Row
imax = Sheets("Archives régularisations").Range("B65536").End(xlUp).Row


For x = 2 To xmax
For I = 2 To imax

idem = 0
j = 2

If Worksheets("Archives régularisations").Cells(I, j) = Worksheets("Factures en attente").Cells(x, j) Then
idem = idem + 1
End If
Next

If idem = 1 Then
Worksheets("Factures en attente").Unprotect (123)
Worksheets("Factures en attente").Rows(x).Delete
x = x - 1
End If
Next

End Sub

J'ai rendu, suite à votre conseil un peu plus léger mon code. Je ne suis qu'une débutante mais j'adore comprendre et avancer sur mes codes mais là je sèche.
0