Vba : effacer des doublons.
Fermé
Arthur
-
7 avril 2010 à 11:00
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 7 avril 2010 à 23:11
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 7 avril 2010 à 23:11
A voir également:
- Vba : effacer des doublons.
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
7 réponses
Petit up,
J'ai cherché a changé un peu mon code et je butte sur un autre problème :
Sheets("Feuil2").Visible = True
Sheets("Feuil1").Visible = False
With Sheets("Feuil2")
.Columns("A:E").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For i = .[A65000].End(xlUp).Row To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then Rows(i).Delete
Next i
Application.Calculations = xlCalculationAutomatic
End With
La partie en gras et soulignée est objet d'une erreur '1004' : Référence de tri non valide. Vérifiez qu'elle se trouve bien parmi les données à trier et que la zone Trier n'est pas identique ou vide.
Merci d'avance si quelqu'un peut m'aider car j'ai vraiment besoin de trouver une solution.
J'ai cherché a changé un peu mon code et je butte sur un autre problème :
Sheets("Feuil2").Visible = True
Sheets("Feuil1").Visible = False
With Sheets("Feuil2")
.Columns("A:E").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For i = .[A65000].End(xlUp).Row To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then Rows(i).Delete
Next i
Application.Calculations = xlCalculationAutomatic
End With
La partie en gras et soulignée est objet d'une erreur '1004' : Référence de tri non valide. Vérifiez qu'elle se trouve bien parmi les données à trier et que la zone Trier n'est pas identique ou vide.
Merci d'avance si quelqu'un peut m'aider car j'ai vraiment besoin de trouver une solution.
Mike-31
Messages postés
18351
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 décembre 2024
5 110
7 avril 2010 à 13:49
7 avril 2010 à 13:49
Salut,
Testes comme cela, mais pourquoi au départ tu déclares la feuille 2 visible et la feuille 1 masquée. Pour ma par je supprimerais ces deux lignes vu que le bouton qui commande le code est certainement sur la feuille concernée !
Sub Procedure2()
Sheets("Feuil2").Visible = True
Sheets("Feuil1").Visible = False
[A2].Select
ActiveCell.CurrentRegion.Sort Key1:=[A2], Order1:=xlAscending, Header:=xlYes
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
While ActiveCell <> ""
If ActiveCell = donnee1 Then
ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1, 0).Select
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
Else
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub
Testes comme cela, mais pourquoi au départ tu déclares la feuille 2 visible et la feuille 1 masquée. Pour ma par je supprimerais ces deux lignes vu que le bouton qui commande le code est certainement sur la feuille concernée !
Sub Procedure2()
Sheets("Feuil2").Visible = True
Sheets("Feuil1").Visible = False
[A2].Select
ActiveCell.CurrentRegion.Sort Key1:=[A2], Order1:=xlAscending, Header:=xlYes
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
While ActiveCell <> ""
If ActiveCell = donnee1 Then
ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1, 0).Select
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
Else
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub
Merci beaucoup de t'intéresser à mon problème. Malheureusement, je bug sur [A2].select...
Il ne veut pas sélectionner. Et pour répondre à ta question, non le bouton n'est pas sur la même feuille que le tableau à "nettoyer"... Je ne comprends pas trop d'ou peut venir le problème ...
Il ne veut pas sélectionner. Et pour répondre à ta question, non le bouton n'est pas sur la même feuille que le tableau à "nettoyer"... Je ne comprends pas trop d'ou peut venir le problème ...
Mike-31
Messages postés
18351
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 décembre 2024
5 110
7 avril 2010 à 15:38
7 avril 2010 à 15:38
Re,
[A2] est un raccourci de Range("A2")
Sub Procedure2()
Sheets("Feuil2").Visible = True
Sheets("Feuil1").Visible = False
Sheets("Feuil2").Activate
[A2].Select
ActiveCell.CurrentRegion.Sort Key1:=[A2], Order1:=xlAscending, Header:=xlYes
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
While ActiveCell <> ""
If ActiveCell = donnee1 Then
ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1, 0).Select
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
Else
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
[A2] est un raccourci de Range("A2")
Sub Procedure2()
Sheets("Feuil2").Visible = True
Sheets("Feuil1").Visible = False
Sheets("Feuil2").Activate
[A2].Select
ActiveCell.CurrentRegion.Sort Key1:=[A2], Order1:=xlAscending, Header:=xlYes
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
While ActiveCell <> ""
If ActiveCell = donnee1 Then
ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1, 0).Select
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
Else
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
1) Mike je te remercie vraiment, en fait ton exemple marchait pour mon classeur test mais une fois mis dans mon fichier final, il ne marche pas... L'erreur est sur la ligne soulignée, j'ai tenté plusieurs modifications mais en vain. Je suis à deux doigts de la crise de nerf. VBA nuit gravement à la santé des novices ;)
2) Current Region représente quoi ? Ici mon tableau peut être remplie jusqu'aux dimensions suivantes : (A1:X1000).
3) Ici c'est la colonne B qui définit le tri.
Workbooks("Classeur Commun X.xls").Sheets("Archives régularisations").Unprotect (123)
Workbooks("Classeur Commun X.xls").Sheets("Archives régularisations").Activate
[B2].Select
ActiveCell.CurrentRegion.Sort Key1:=[B2], Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
While ActiveCell <> ""
If ActiveCell = donnee1 Then
ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1, 0).Select
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
Else
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Wend
2) Current Region représente quoi ? Ici mon tableau peut être remplie jusqu'aux dimensions suivantes : (A1:X1000).
3) Ici c'est la colonne B qui définit le tri.
Workbooks("Classeur Commun X.xls").Sheets("Archives régularisations").Unprotect (123)
Workbooks("Classeur Commun X.xls").Sheets("Archives régularisations").Activate
[B2].Select
ActiveCell.CurrentRegion.Sort Key1:=[B2], Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
While ActiveCell <> ""
If ActiveCell = donnee1 Then
ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1, 0).Select
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
Else
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Wend
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
7 avril 2010 à 22:05
7 avril 2010 à 22:05
Bonjour,
Juste au passage, (en respectant l'écriture de Mike-31...) essayer de prendre que cette partie de la ligne soulignée:
Juste au passage, (en respectant l'écriture de Mike-31...) essayer de prendre que cette partie de la ligne soulignée:
ActiveCell.CurrentRegion.Sort Key1:=[B2], Order1:=xlAscending, Header:=xlYes
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
7 avril 2010 à 23:11
7 avril 2010 à 23:11
bonjour à tous
Il me semble qu'il vaudrait mieux continuer dans l'option de départ choisie avec une cellule active :
ActiveCell.CurrentRegion.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlYes
Ensuite pour éviter toute ambiguïté, il serait souhaitable d'activer aussi la feuille précédemment :
Sheets("Feuil2").Activate
Il me semble qu'il vaudrait mieux continuer dans l'option de départ choisie avec une cellule active :
ActiveCell.CurrentRegion.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlYes
Ensuite pour éviter toute ambiguïté, il serait souhaitable d'activer aussi la feuille précédemment :
Sheets("Feuil2").Activate