Eliminer lignes doubles

  • Initiateur de la discussion Robert
  • Date de début
R

Robert

Guest
Bonjour à tous

Pourriez vous me venir en aide sur le sujet suivant:

Je ne vous joint pas mon fichier, car j'ai cru comprendre que le site est en surcharge.

J'ai un tableau dont certains doublons s'installent à chaque régénération. Les lignes se copient en double l'une sous l'autre mais pas systématiquement.

Je désir tester à partir de la ligne 2
Test de la première ligne, colonne A et colonne F

Descente d'une ligne

Si le test des mêmes colonnes est identique à la ligne supérieur, suppression de la deuxième ligne trouvée.

Descente d'une ligne et test tant qu 'une ligne est renseignée.

Merci de votre aide
 
M

Mathieu

Guest
Bonjour,
Si tu veux un peu te creuser la tete pour voir comment ca marche il y avait eu une question similaire il y a qq jours, j'ai envoyé un fichier commenté qui explique comment fonctionne la recherche. Une autre personne a fourni une reponse en utilisant les formules d'excel, a toi de voir :
http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=97813&t=97800
(j'ai pas encore trouvé la rubrique qui explike comment donner des liens!!)
Si tu veux pas te creuser la tete je regarderai plus en detail ta demande quand j'aurai le temps.
Bon courage,
Mathieu.
 
B

Boby71C

Guest
Bonjours les amis.

J'ai réussis à élaborer un début de solution qui me convient parfaitement.
En voici le code:

Sub LignesDoubles()
'
' LignesDoubles Macro
' Macro enregistrée le 29/06/2004 par Robert PHILIPPE

' On commence a la deuxième ligne pour échaper aux titres
ligne = 2

' Tant que le contenu de la case n'est pas vide (donc tant qu'on est pas
' à la fin de la colonne) on continu de lire les lignes
While Range("A" & ligne).Value <> ""
' Si la valeur de la case est egale a la valeur de la case précédente on
' selectionne la ligne entière
If Range("A" & ligne).Value = Range("A" & ligne + 1).Value Then
Range("A" & ligne + 1).Activate
Range("A" & ligne + 1).Select
' Suppression de la ligne sélectionnée
Selection.EntireRow.Delete
End If
' On passe a la ligne suivante
ligne = ligne + 1

While Range("A" & ligne).Value = ""
' Si la valeur de la case est egale rien descente d'une ligne
ligne = ligne + 1
If Range("A" & ligne).Value = Range("A" & ligne + 1).Value Then
Range("A" & ligne + 1).Activate
Range("A" & ligne + 1).Select
' Suppression de la ligne sélectionnée
Selection.EntireRow.Delete
End If
Wend
Wend

End Sub

Mon dernier souci est le suivant:
Je n'arrive pas à arrêter ma macro lorsque j'ai plus de 2 cellules A non renseignées.
' Créer un compteur de cellules (A) vides.
' Si + de 2 cellules vides, alors:
' Positionnement en A2 et arrêt de la macro

Pouvez vous m'aider à nouveau pour clore ma macro

Merci beaucoup à tous pour votre temps passé à nous aider

A+
Robert
 
B

Boby71C

Guest
Re Bonjour les amis

Ne cherchez plus, j'ai réussis à trouver la solution.

J'éprouve une certaine fiérté d'avoir réussis presque seul.
Comme vous le savez, je suis un débutant en VBA.

Je vous remercie tous une nouvelle foi car sans votre aide, une évolution dans se domaine, seul, serait impossible.

Vous êtes tous merveilleux et que votre forum vive trés longtemps car nous en avons tous besoin.

ci-joint la macro complète si elle put être utile à d'autres passionnés:
Sub LignesDoubles()
' Macro enregistrée le 29/06/2004 par Robert PHILIPPE
Application.ScreenUpdating = False

' Nous commençons à la deuxième ligne pour échapper aux titres
ligne = 2

' Si le contenu de la cellule n'est pas vide nous continuons de lire les lignes
While Range("A" & ligne).Value <> ""
' Si la valeur de la cellule est = à la valeur de la cellule précédente alors,
' sélection de la ligne entière
If Range("A" & ligne).Value = Range("A" & ligne + 1).Value Then
Range("A" & ligne + 1).Activate
Range("A" & ligne + 1).Select
' Suppression de la ligne sélectionnée
Selection.EntireRow.Delete
End If
' Passage à la ligne suivante
ligne = ligne + 1
' Si la valeur de la cellule égale à rien
While Range("A" & ligne).Value = ""
' Alors descente d'une ligne
ligne = ligne + 1
' Si la valeur de la cellule est égale à la valeur de la cellule précédente alors,
' sélection de la ligne entière
If Range("A" & ligne).Value = Range("A" & ligne + 1).Value Then
Range("A" & ligne + 1).Activate
Range("A" & ligne + 1).Select
' Suppression de la ligne sélectionnée
Selection.EntireRow.Delete
End If
' Si la valeur de la cellule = rien
While Range("A" & ligne).Value = ""
' Positionnement en (A2)
Range("A2").Select
' Arrêt de la macro
Exit Sub
Wend
Wend
Wend
End Sub

Peut être a t'elle besoin de corrections pour la simplifier, mais je n'ai pas les connaissances requises!

Merci à tous
 

Discussions similaires

Réponses
7
Affichages
341

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 950
dernier inscrit
Thomas Solioz