Remplacement de lignes et suppression de la plus pleine [Résolu]

  • Initiateur de la discussion Initiateur de la discussion Aurel59
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Aurel59

XLDnaute Nouveau
Bonjour,

Je viens vous solliciter sur une partie de macro que je désire réaliser. Dans un tableau à en-tête, on retrouve des doublons après import des lignes d'un autre tableau, c'est à dire des lignes ayant le même nom en colonne A, qu'importe les autres colonnes. On souhaite garder celui des deux doublons (si il existe) ayant le nombre de colonne le plus rempli.

J'ai pensé à cela et ça ne fonctionne pas vraiment :

Code:
    Private Sub SD()

        MaCellule = "A2"
        Range(MaCellule).Select
        ActiveCell.CurrentRegion.Sort Key1:=Range(MaCellule), Order1:=xlAscending, Header:=xlYes
        Donnee1 = ActiveCell
        Ligne1 = ActiveCell.Row
        Ligne2 = ActiveCell.Offset(1, 0).Row
       
        While ActiveCell <> ""
            ActiveCell.Offset(1, 0).Select
            Nb1 = WorksheetFunction.CountA(Worksheets("BDD").Rows(Ligne1))
            Nb2 = WorksheetFunction.CountA(Worksheets("BDD").Rows(Ligne2))
            If ActiveCell = Donnee1 and Nb1<>Nb2 Then
                ActiveCell.Offset(-1, 0).Select
                ActiveCell.EntireRow.Delete
               
                Donnee1 = ActiveCell
                Ligne1 = ActiveCell.Row
                Ligne2 = ActiveCell.Offset(1, 0).Row
            End If
        Wend
       
    End Sub

Cette macro compare chaque ligne avec la suivante, il faut faire un tri alphabétique par nom avant (c'est un autre histoire mais pas réussi non plus à amorcer ce code-ci !)

Un grand merci pour votre aide en tout cas !
 

Pièces jointes

Dernière édition:
Re : Remplacement de lignes et suppression de la plus pleine

Bonjour à tous

il faut faire un tri alphabétique par nom avant (c'est un autre histoire mais pas réussi non plus à amorcer ce code-ci !)
Le tri existe et fonctionne , c'est la ligne ActiveCell.CurrentRegion.Sort ...

Une autre version de la macro:

Code:
Private Sub SD()

    MaCellule = "A2"
    Range(MaCellule).CurrentRegion.Sort Key1:=Range(MaCellule), Order1:=xlAscending, Header:=xlYes
    DerLig = Range(MaCellule).CurrentRegion.End(xlDown).Row
    
    For i = DerLig To 2 Step -1
        If Cells(i, 1) = Cells(i + 1, 1) Then
            If WorksheetFunction.CountA(Worksheets("BDD").Rows(i + 1)) > WorksheetFunction.CountA(Worksheets("BDD").Rows(i)) Then
                Cells(i, 1).EntireRow.Delete
            Else
                MsgBox "Ligne i+1 " & i + 1
                Cells(i + 1, 1).EntireRow.Delete
            End If
        End If
    Next
    
End Sub

A+

Edit: la ligne MsgBox... est à supprimer!
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

J
  • Question Question
Réponses
12
Affichages
1 K
J
Retour