Suppression des doublant selon des condition rapidement

Fermé
Zarzis - Modifié le 28 juil. 2020 à 11:48
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 28 juil. 2020 à 11:52
Bonjour à tous,
J'ai crée un macro qui permet de supprimer les doublant dans un tableau excel avec des conditions. Le macro fonctionne très bien mais puisque j'ai beaucoup des données, il prend beaucoup du temps.
Il y a t-il une autre solution pour supprimer les doublant selon des condition rapidement?
Merci d'avance,
Voila mon code;
<'Supprimer les doublant
I = 2
.Range("A" & I).Select
Do While Not (IsEmpty(ActiveCell))
   For J = I + 1 To DL
       If .Range("A" & I) = .Range("A" & J) Then
       If .Range("D" & I) = 0 Then
          .Range("F" & J).Value = .Range("F" & I).Value
          .Rows(I).EntireRow.Delete Shift:=xlUp
          I = I - 1
        ElseIf .Range("D" & I) = 1 Then
        .Range("F" & I).Value = .Range("F" & J).Value2
         .Rows(J).EntireRow.Delete Shift:=xlUp
        End If
        
          J = J + 1
       Else
       End If
   Next
   I = I + 1
   .Range("A" & I).Select
Loop>
A voir également:

3 réponses

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
28 juil. 2020 à 11:21
bonjour, peux-tu utiliser les balises de code quand tu partages du code, en précisant "basic" pour du code VBA? https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
28 juil. 2020 à 11:43
bonjour,
"beaucoup", c'est combien?
je suis étonné par la position de l'instruction "j = j + 1"
comme tu supprimes des lignes, je pense qu'il est plus simple de faire le travail de bas en haut. cela simplifie aussi les tests de fin de boucle et de supprimer le "select".

je pense à ces alternatives:
1) utiliser FIND au lieu de la boucle en J
https://docs.microsoft.com/fr-ch/office/vba/api/excel.range.find
2) commencer par trier les lignes par les valeurs en colonne A, de façon à ce que les doublons se suivent. si l'ordre des lignes soit être préservé, trier ensuite pour rétablir l'ordre d'origine, en utilisant une colonne préalablement remplie à cet effet.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
28 juil. 2020 à 11:52
Bonjour tout le monde,

Zarzis
For J = I + 1 To DL

Sort d'ou la variable DL

Evitez les select et mettre
avant le Do
Application.ScreenUpdating = False

et en fin de procedure
Application.ScreenUpdating = True

Si ce n'est deja fait
0