Copier les lignes filtres sur un autre onglet
Bonjour ,
Auriez-vous une idée, si cela est réalisable de copier - coller en valeur les lignes filtrées ( macro 1) sur l'onglet LLS vers l'onglet Suivi , tout en évitant les doublons via la colonne Vérif ( qui est une concaténation des champs = clé unique ) et comprenant une ligne d'entete ?
Merci d'avance
Bonjour Fleurmi,
A tester, si le code en N est un doublon, la ligne n'est pas prise en compte
Sub Transfert_LLS_Suivi()
Dim Dlig As Long, Lig As Long, nLig As Long
Dim ShtS As Worksheet, ShtD As Worksheet
Dim Dico As Object, sKey As String
' Définir les feuilles
Set ShtS = ThisWorkbook.Sheets("LLS")
Set ShtD = ThisWorkbook.Sheets("SUIVI")
' Dernière ligne remplie de la feuille source
Dlig = ShtS.Range("A" & Rows.Count).End(xlUp).Row
' Nouvelles ligne de la feuille de destination
nLig = ShtD.Range("I" & Rows.Count).End(xlUp).Offset(1, 0).Row
' Définir le dictionnaire pour les doublons et le remplir
Set Dico = CreateObject("Scripting.Dictionary")
With ShtD
For Lig = 2 To nLig - 1
sKey = .Range("I" & Lig).Value
Dico(sKey) = ""
Next Lig
End With
With ShtS
For Lig = 2 To Dlig
If .Rows(Lig).Hidden = False Then
sKey = .Range("N" & Lig).Value
' Si clé n'existe pas
If Not Dico.Exists(sKey) Then
' L'ajouter
Dico.Add sKey, ""
' Copier les données
ShtD.Range("B" & nLig).Value = ShtS.Range("A" & Lig).Value
' Etc...
' Incrémenter les nouvelle lignes
nLig = nLig + 1
End If
End If
Next Lig
End With
Set ShtD = Nothing: Set ShtS = Nothing
End Sub
A+
Bonjour BrunoM45,
Merci Beaucoup pour ton code VBA , C'est impressionnant à chaque fois la puissance de VBA comparer à des formule Excel ....
Ton code Marche Parfaitement , mais il ne me copie que la colonne REF ATA 100 , est ce qu'il est possible de l'avoir jusqua la colonne VERIF ?
Je pense quand essayant de lire de code :) , que ces cette partie qui interagie avec le copier coller
merci encore pour ton aide
Re BrunoM45,
J'ai réussie :)
' Copier les données
ShtD.Range("B" & nLig).Value = ShtS.Range("A" & Lig).Value
ShtD.Range("C" & nLig).Value = ShtS.Range("B" & Lig).Value
etc...
merci encore
Bonne soirée a vous
Re,
Bien joué tu as trouvé et compris
Excel est tout aussi puissant avec des formules, des TCD ou Power Query, mais pour moi le VBA est souvent plus simple
@+