Copie automatique de cellules non vides vba

bee -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche à copier automatiquement toutes les données non vides d'une base de données dans une nouvelle feuille.

Pour ce faire, j'ai fait une macro vba :
Sub Filtre()

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("Actions correctives-préventives").Activate

Col = "A"
NumLig = 0
With Sheets("Données actions")
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With

End Sub

Mais malheureusement ca ne fonctionne que pour la première ligne...les autres ne sont pas copiées....

pouvez vous m'aider?

merci

<config>Windows XP /

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Tu pourrais te dispenser de boucle...en évitant la copie de lignes entières
    le principe
    Sub Filtre()
    
    Dim Lig As Long
    Dim Col As String
    Dim NbrLig As Long
    Dim NbrCol As Byte
    Dim Tampon
    
    Col = "A"
    
    With Sheets("Données actions")
            NbrLig = .Cells(65536, Col).End(xlUp).Row
            NbrCol = Range("iv1").End(xlToLeft).Column
            Tampon = Range(Cells(1, Col), Cells(NbrLig, NbrCol))
    End With
    With Sheets("Actions correctives-préventives")
            .Range("A1").Resize(NbrLig, NbrCol) = Tampon
            .Range("A1:A" & NbrLig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
            .Activate
    End With
    End Sub
    


    Non testé
    0