Vba excel : besoin d'aide.
Résolu/Fermé
A voir également:
- Vba excel : besoin d'aide.
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
4 réponses
jejelefou
Messages postés
304
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
18 février 2016
42
14 avril 2010 à 11:51
14 avril 2010 à 11:51
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é
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é
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 avril 2010 à 14:42
14 avril 2010 à 14:42
re,
ci dessous code à essayer
peut être remplacer sheets(X) par sheets("nomdelonglet")
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")
jejelefou
Messages postés
304
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
18 février 2016
42
14 avril 2010 à 09:38
14 avril 2010 à 09:38
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é
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é
jejelefou
Messages postés
304
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
18 février 2016
42
14 avril 2010 à 10:29
14 avril 2010 à 10:29
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
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
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.
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.
14 avril 2010 à 11:55
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.
14 avril 2010 à 12:04
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
14 avril 2010 à 12:28
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
14 avril 2010 à 13:45
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é
14 avril 2010 à 13:50
Tu ne crois pas que ce serait plutôt à Juliette de répondre? :-D