Invité
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

[ Voir toute la liste ]


Le record du nombre d'utilisateurs en ligne est de 21 le Ven 26 Aoû 2016 - 23:21
Derniers sujets
» Les icones du bureau changent de place
Mar 23 Fév 2016 - 15:18 par gilou71

» Changer de mobile
Mar 23 Fév 2016 - 9:48 par Jean-Pierre-45

» hp 5530
Mer 11 Nov 2015 - 12:50 par LilyFlow

» [Sondage] Passage à Windows 10
Mar 8 Sep 2015 - 15:51 par LilyFlow

» Création de la section Windows 10 pour le forum
Lun 7 Sep 2015 - 7:39 par Jean-Pierre-45

» Dois-je réserver Windows 10 ?
Jeu 3 Sep 2015 - 4:20 par guy37

» Imprimante canon ip4300
Mer 2 Sep 2015 - 22:43 par harlock59

» scan HP ENVY 5530
Lun 8 Juin 2015 - 15:58 par LilyFlow

» Nouvelle imprimante
Lun 20 Avr 2015 - 17:38 par Jean-Pierre-45

Les posteurs les plus actifs de la semaine

Nos Partenaires



[Macro Excel 2003] Simplification de macro

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Macro Excel 2003] Simplification de macro

Message par LilyFlow le Mar 29 Oct 2013 - 15:21

Bonjour à tous

J'ai fais une macro mais mon problème, c'est que je ne suis même pas sur quelle fonctionne :

J'ai un tableau avec environ 8000 lignes.

J'ai fait un code qui permet de vérifier les doublons.
Lorsque la macro en trouve, il copie les deux ligne sur une autre feuille du classeur.

Voici mon code :
Code:
Sub Doublons()

DerLi = Range("G60000").End(xlUp).Row

For i = 1 To DerLi
For j = 1 To DerLi
    Worksheets("MACHINES").Select
    If Range("I" & i).Value = Range("I" & j).Value And i <> j Then
        Range("A" & i & ":" & "W" & i).Select
        Selection.Copy
        Sheets("Doublons").Select
        Range("A" & i).Select
        ActiveSheet.Paste
    Worksheets("MACHINES").Select
        Range("A" & j & ":" & "W" & j).Select
        Selection.Copy
        Sheets("Doublons").Select
        Range("A" & j).Select
        ActiveSheet.Paste
    End If
Next j
Next i

For x = 1 To DerLi
For y = 1 To DerLi
    Worksheets("MACHINES").Select
    If Range("G" & x).Value = Range("G" & y).Value And i <> j Then
        Range("A" & x & ":" & "W" & x).Select
        Selection.Copy
        Sheets("Doublons").Select
        Range("A" & x).Select
        ActiveSheet.Paste
    Worksheets("MACHINES").Select
        Range("A" & x & ":" & "W" & y).Select
        Selection.Copy
        Sheets("Doublons").Select
        Range("A" & x).Select
        ActiveSheet.Paste
    End If
Next y
Next x

    Worksheets("MACHINES").Select
    Range("A1:W1").Select
    Selection.Copy
    Sheets("Doublons").Select
    Range("A1").Select
    ActiveSheet.Paste

    Columns("G:G").Select
    Range("A2:W9987").Sort Key1:=Range("G1"), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal


End Sub
Le code compare les cellules I de toute les lignes et si il y a un doublons, on copie la première ligne du doublons dans la seconde feuille et ensuite, on copie la seconde ligne du doublons dans la seconde feuille.
On fait la même chose pour les cellules G.
Et pour finir, (c'est une solution que je ne veut laisser définitive), on copie la première ligne de la première feuille et on fait un tri pour supprimer les lignes vides en fait.

Se code n'est pas fait pour des feuilles avec beaucoup de ligne.
Il compare chaque ligne avec les autres lignes une à une et je lui demande de le faire deux fois.
Si je ne me trompe pas, avec 8000 ligne, la macro fait environ 128 000 000 comparaisons.
C'est un peut beaucoup trop long et chaque fois Excel plante (pas de message d'erreur) mais obligé de passer par le gestionnaire de tache pour pouvoir débloquer le PC.

Donc, existe t-il un moyen de simplifier le code ??

Merci d'avance de votre aide si vous avez compris se que j'ai écrie.

Bonne journée
A+
avatar
LilyFlow

Masculin Messages : 705
Date d'inscription : 14/04/2013
Age : 37
Localisation : 82

Voir le profil de l'utilisateur http://pcassistance.forumactif.org

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum