Invité
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité Aucun
Le record du nombre d'utilisateurs en ligne est de 28 le Lun 21 Aoû 2023 - 7:42
Derniers sujets
Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Rechercher
[Macro Excel 2003] Simplification de macro
Page 1 sur 1
[Macro Excel 2003] Simplification de macro
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 :
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+
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
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+
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
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