Copie automatique de cellules non vides vba

Fermé
bee - 19 janv. 2011 à 18:03
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 19 janv. 2011 à 18:38
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 /
A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 janv. 2011 à 18:38
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