Copie automatique de cellules non vides vba
bee
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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 /
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
-
Bonjour,
Tu pourrais te dispenser de boucle...en évitant la copie de lignes entières
le principeSub 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é