OVH Cloud OVH Cloud

Supression des lignes en double

24 réponses
Avatar
romeo59181
Ce message est composé et au format MIME.

------=_NextPart_000_00BA_01C8F25E.37B956C0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Bonjour,=20

Tout est dans le titre ...

Je recherche une macro qui me supprimeras toutes les lignes 100% =
identiques,

@+

Romeo59181
------=_NextPart_000_00BA_01C8F25E.37B956C0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3Diso-8859-1>
<META content=3D"MSHTML 6.00.6000.16681" name=3DGENERATOR></HEAD>
<BODY id=3DMailContainerBody=20
style=3D"PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"=20
bgColor=3D#ffffff leftMargin=3D0 topMargin=3D0 CanvasTabStop=3D"true"=20
name=3D"Compose message area">
<DIV><FONT face=3DArial size=3D2>Bonjour, </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Tout est dans le titre ...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Je recherche une macro qui me =
supprimeras toutes=20
les lignes 100% identiques,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>@+</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Romeo59181</FONT></DIV></BODY></HTML>

------=_NextPart_000_00BA_01C8F25E.37B956C0--

10 réponses

1 2 3
Avatar
romeo59181
Bonjour,

Sisi, je l'ai bien vue, tu m'as répondu ceci :

Rebonjour à toi

"Mais en plus que le contrôle s'effectue aussi au départ des autres onglets"

Quel contrôle ????

Veux tu dire que le traitement de l'Onglet "Générale" mis en place doit
aussi s'effectuer sur chaque Onglet a savoir envoyé les lignes colorées de
chaque Onglet vers l'Onglet approprié

Si le traitement est réalisé de l'Onglet "Général" vers les autres Onglets
en fonction de la couleur des lignes chaque onglet aura en toute logique que
ses bonnes lignes

Pourquoi traiter ensuite chacun d'eux ???

J'avoue ne pas comprendre

Merci de m'éclairer

A cela je t'ai répondu :

Bonjour,

Oui je veux dire que le traitement de l'Onglet "Générale" mis en place doit
aussi s'effectuer sur chaque Onglet a savoir envoyé les lignes colorées de
chaque Onglet vers l'Onglet approprié .

En effet je vais être amené à modifier la coloration des lignes dans les
différents onglets,

@+

Romeo59181


================================================================================================
"FFO" a écrit dans le message de groupe de
discussion :
Rebonjours à toi

Sur le Fil "Classement des lignes" je t'ai plusieurs fois répondu !!!!!
Mais tu ne semble pas t'en rendre compte

Reconsultes le tu doit trouver mes réponses




Avatar
romeo59181
Bonjour,

Non il ne fonctionne pas,

Voici le résultat obtenu,

http://www.cijoint.fr/cjlink.php?file=cj200807/cije1oNjKl.jpg

@+

Romeo59181

"FFO" a écrit dans le message de groupe de
discussion :
Rebonjour à toi

As tu essayé mon exemple ????
Qu'a t'il donné ????

Je ne peux ouvrir ton fichier (bug Excel)
Peux tu m'en transmettre un nouveau

Merci




Avatar
FFO
Rebonjours à Toi

Cette réponse n'est pas la dernière !!!!

Il ya celle-ci faisant suite à ta demande qui a suivi :

"
Rebonjour à toi

J'ai attendu ta réponse quelques jours mais n'ayant pas eu de nouvelles j'ai
quelque peu abandonner le fil et c'est par hazard aujourd'hui que je la
découvre

Mille excuses pour ton attente

Sur ce lien ton document avec l'ensemble des Macros
Chacune porte le nom de l'onglet à traiter

Or mis la Macro "Générale" qui traite les couleurs à partir de la ligne 4
toutes les autres les traitent à partir de la 1° ligne

Fais des essais et dis moi !!!!

http://www.cijoint.fr/cjlink.php?file=cj200807/cijiHkvDli.xls.
"


Et d'autres encore faisant réponse à des demandes suivantes

Reconsulte méticulesement tout le Fil

Donnes moi des nouvelles !!!
Avatar
FFO
Rebonjour à toi

Sur ce lien une copie d'écran de ma réponse suite à ta dernière demande sur
le fil Classement des lignes

http://www.cijoint.fr/cjlink.php?file=cj200807/cijpCBsY3t.doc
Avatar
romeo59181
Bonjour,

Sur le fichier que tu envoyé je fait des tests et ça fonctionne à merveille
mais dès que je demande à Excel de traiter mes données voici le message :

http://www.cijoint.fr/cjlink.php?file=cj200807/cijfYmi8WN.jpg
http://www.cijoint.fr/cjlink.php?file=cj200807/cijggo5EEb.jpg

Peut tu m'en dire plus ?

@+

Romeo59181



"FFO" a écrit dans le message de groupe de
discussion :
Rebonjours à Toi

Cette réponse n'est pas la dernière !!!!

Il ya celle-ci faisant suite à ta demande qui a suivi :

"
Rebonjour à toi

J'ai attendu ta réponse quelques jours mais n'ayant pas eu de nouvelles
j'ai
quelque peu abandonner le fil et c'est par hazard aujourd'hui que je la
découvre

Mille excuses pour ton attente

Sur ce lien ton document avec l'ensemble des Macros
Chacune porte le nom de l'onglet à traiter

Or mis la Macro "Générale" qui traite les couleurs à partir de la ligne 4
toutes les autres les traitent à partir de la 1° ligne

Fais des essais et dis moi !!!!

http://www.cijoint.fr/cjlink.php?file=cj200807/cijiHkvDli.xls.
"


Et d'autres encore faisant réponse à des demandes suivantes

Reconsulte méticulesement tout le Fil

Donnes moi des nouvelles !!!



Avatar
FFO
Rebonjour à toi

Tes données sont plus importantes que les miennes
Ce qui a engendré le bug suite à une petite anomalie du code que l'ampleur
plus réduites de mes données ne m'a pas permis de déceler
J'ai apporté quelques petits réglages supplémentaires et tout semble
fonctionner correctement
J'ai opéré des essais en multipliant par 5 le nombre de lignes à traiter

Celà devrait maintenant te convenir même avec tes fichiers

Sur ce lien ton document corrigé

Tiens moi informé du résultat !!!!

http://www.cijoint.fr/cjlink.php?file=cj200807/cijoSInzno.xls
Avatar
romeo59181
Non toujours un message d'erreur :

http://www.cijoint.fr/cjlink.php?file=cj200807/cijbOsHdqQ.jpg
http://www.cijoint.fr/cjlink.php?file=cj200807/cijDelMAq1.jpg

A titre d'information mon fichier fait actuellement 2543 lignes sur 32
colonnes,

@+

Romeo59181

"FFO" a écrit dans le message de groupe de
discussion :
Rebonjour à toi

Tes données sont plus importantes que les miennes
Ce qui a engendré le bug suite à une petite anomalie du code que l'ampleur
plus réduites de mes données ne m'a pas permis de déceler
J'ai apporté quelques petits réglages supplémentaires et tout semble
fonctionner correctement
J'ai opéré des essais en multipliant par 5 le nombre de lignes à traiter

Celà devrait maintenant te convenir même avec tes fichiers

Sur ce lien ton document corrigé

Tiens moi informé du résultat !!!!

http://www.cijoint.fr/cjlink.php?file=cj200807/cijoSInzno.xls


Avatar
FFO
Rebonjour à toi

La difficulté réside dans le nombre de lignes à supprimer de manière
simultanée afin de rendre le traitement le plus rapide possible mais avec le
risque de ce Bug car le code peux demander un nombre de lignes trop important
à traiter en même temps
Ce qui est surprenant c'est que plus le fichier est important plus ce nombre
doit être petit
Mon fichier d'exemple (63 lignes) me permet un traitement de 60 lignes
simultanées

Ayant multiplié par 5 leur nombre dans ma 2° version j'ai du réduire à 50

Tu me parles de 2543 lignes ce qui est encore supérieur m'obligeant à
réduire encore plus (40 lignes simultanées)

On pourrait évidemment pour assurer le coup descendre ce chiffre au minimun
à savoir 1 mais l'inconvénient c'est que pour 2543 lignes le traitement pour
40 lignes simultanées demande 5 secondes alors que pour 1 ligne à la fois le
traitement demande 25 secondes

Il faut donc trouver un compromis entre ce bug potentiel et la rapidité

Ce paramétre est géré pour toutes les macros par cette ligne :

If n = 40 Then

dans la partie :

If n = 40 Then
Suppression = Suppression & Mid(Lignes, 1, Len(Lignes) - 1) & "/"
n = 0
Lignes = ""
End If

fort de la précision que tu viens de me donner sur le nombre de lignes à
traiter (2543) j'ai mis ce curseur à 40 comme sur ces lignes de code et pour
toutes les macros

Tu peux le régler à ta façon et d'une manière différenciée pour chaque macro

Sur ce lien le document corrigé ainsi

Fais des essais et dis moi !!!!

http://www.cijoint.fr/cjlink.php?file=cj200808/cijzuMZTLb.xls
Avatar
FFO
Rebonjour à toi

J'ai fini par comprendre le fonctionnement et l'explication des bugs en
fonction des lignes

Par le paramètre n je détermine le nombre de lignes simultanées à supprimer
représenté par :

Range(Split(Suppression, "/")(j)).EntireRow.Delete

Split(Suppression, "/")(j) mets en place pour l'instruction Range l'adresse
de chaque cellule sous la forme :

Range("A1,A2,A20,A60,A100 ....)

Or lenombre de caractère à l'intérieur des paranthèses ne doit pas exceder
255 virgules comprises

Lorque mes lignes sont situées au début de la feuille les chiffres indices
aprés la lettre de la colonne A sont petits (1 à 2 chiffres)
Celà permet un plus grand nombre de cellules dans la plage de 255 caractères
Mais plus il y a de lignes plus les chiffres indices sont important pouvant
atteindre pour la dernière lignes 5 chiffres (A65536) donc nettement moins de
cellules simultanées pour rentrer dans la plage des 255 caractères maximum

J'ai donc pour tenir compte de cette contrainte changé la condition

Aulieu de :

If n = xx

J'ai mis :

If Len(Lignes) + 10 > 255 Then

Lignes étant le paramettre qui porte l'ensemble des cellules à traiter avec
une marge de 10

Ainsi donc la macro automatiquement prendra le maximum de lignes à traiter
pour la suppression sans aller jusqu'au Bug

Sur ce lien le document corrigé ainsi

Fait des essais et dis moi !!!!

http://www.cijoint.fr/cjlink.php?file=cj200808/cijo7XLNFw.xls
Avatar
FFO
Rebonjour à toi

Pour la suppression des lignes en double ce code modifié est plus rapide que
celui que je t'ai proposé :

Range("A2", "A" &
Range("A2").SpecialCells(xlCellTypeLastCell).Row).EntireRow.Sort
Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A" & Range("A2").SpecialCells(xlCellTypeLastCell).Row).Activate
Do While ActiveCell.Offset(-i, 0).Row > 1
For j = 1 To Range("A1").SpecialCells(xlCellTypeLastCell).Column
If Cells(ActiveCell.Offset(-i, 0).Row, j) <> Cells(ActiveCell.Offset(-i,
0).Row - 1, j) Then
Divergence = 1
Exit For
End If
Next
If Divergence <> 1 Then
ActiveCell.Offset(-i, 0).EntireRow.Clear
End If
Divergence = ""
i = i + 1
Loop
Range("A2", "A" &
Range("A2").SpecialCells(xlCellTypeLastCell).Row).EntireRow.Sort
Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1").Activate

Essayes le et dis moi !!!!
1 2 3