question sur doublons et recopie

breakers

XLDnaute Junior
Bonjour,

j'ai une macro qui supprime les doublons, mais cela supprime la ligne or j'aimerais savoir si il est possible d'effacer la cellule en doublon mais de ne pas supprimer la ligne ?, et donc si la ligne est vide recopier celle du dessous à la place ?

car j'ai un tableau plus bas et en supprimant les lignes avec doublons plus haut cela décale donc mes formules et mes recherches.

pour résumer : si doublon dans a2:a20 effacer la ligne mais ne pas la supprimer et recopier la ligne suivante dans la ligne vide en bloquant à a20 car tableau avec en a24

voir tableau
 

Pièces jointes

  • Classeur2.xls
    32 KB · Affichages: 42
  • Classeur2.xls
    32 KB · Affichages: 54
  • Classeur2.xls
    32 KB · Affichages: 38

camarchepas

XLDnaute Barbatruc
Re : question sur doublons et recopie

Bonjour ,

Voici pour les doublons du premier tableau.

La technique est de connaitre la fin du tableau 1 ,
on ajoute une ligne a la fin du tableau, puis l'on efface la ligne doublons .

Et hop , rien de décalé....

Code:
Sub CompletePremier()
Dim MonDico As Object
Dim LigneCourante As Long, DerligneTableau As Long
Dim Lecture As String

  Set MonDico = CreateObject("Scripting.Dictionary")
  Application.ScreenUpdating = False
  LigneCourante = 2
  DerligneTableau = Range("A1").End(xlDown).Row
  'Boucle de la 1° ligne de données à la derniére ligne non vide de la colonne B
  Do While LigneCourante <= Range("A" & Rows.Count).End(xlUp).Row
    Lecture = Cells(LigneCourante, "A")
    
    'Si élément non connu ajout au dico et mémorise numéro de ligne, puis passe à la ligne suivante
    If Not MonDico.Exists(Lecture) Then
      MonDico(Lecture) = LigneCourante
      LigneCourante = LigneCourante + 1
      
     'Si élément connu dans dico alors lecture de la mémoire de ligne, concatene la colonne R puis efface la ligne courante
    Else
      Rows(DerligneTableau + 1).Insert
      Rows(LigneCourante).Delete
      LigneCourante = LigneCourante + 1
    End If
  Loop
    
  Application.ScreenUpdating = True
End Sub
 

breakers

XLDnaute Junior
Re : question sur doublons et recopie

Bonjour !

tout d'abord merci de t'occuper de moi :)

sinon pour la macro, cela ne fonctionne pas comme je le voudrais, je pense m'être mal exprimé..

la 2ieme partie du tableau reprend les lignes sans doublon de a2 à a20 donc a26=a2 etc....et b2 etc... font des recherches

or lors de l'éxécution de ta macro, cela efface aussi celle du "second tableau".

ce qui bien sûr ne devrait pas.

Code:
Sheets("TG03").Select
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
[A1].Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess
For i = [A20].End(xlUp).Row To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then Rows(i).Delete
Next i
Application.Calculation = xlCalculationAutomatic

voici ce que j'utilise pour supprimer les doublons mais comme dit cela efface les lignes donc décale mon 2ième tableau.

vois tu mon problème ?

merci encore
 

Discussions similaires