Ma question est simple, mais je ne trouve pas de réponse En fait je voulais copier les données filtrées.
J'ai un tableau sur la feuille DONNEES, je souhaite filtrer ces données par un numéro et copier la sélection sur la feuille DONEES_EA et ensuite désélectionner le filtre.
Pour l'instant je n'arrive pas à copier les données, car je reçois cette erreur :
Voici mon code :
VB:
Private Sub Choix_Pol()
Columns(4).AutoFilter Field:=1, Criteria1:="P04800"
Range("D:T").SpecialCells(xlCellTypeVisible).Copy Sheets("DONNEES").Range("D106101")
With Sheets("DONEES_EA")
If .FilterMode Then .ShowAllData
End With
End Sub
En fait, je ne sais pas comment indiquer le numéro exacte du range dans Copy Sheets("DONNEES").Range("D106101"), car je ne connais pas la position exacte du numéro dans ma table, j'ai mis "D106101" en dur.
Private Sub Choix_Pol()
With Range("D1:T" & Range("D" & Rows.Count).End(xlUp).Row)
.AutoFilter Field:=1, Criteria1:="P04800"
.Copy Sheets("DONEES_EA").Range("D106101")
.AutoFilter 'ôte le filtre
End With
End Sub
Pour la cellule D106101 il faudrait faire définir sa position par la macro, qu'est-ce que c'est ?
Private Sub Choix_Pol()
With Range("D1:T" & Range("D" & Rows.Count).End(xlUp).Row)
.AutoFilter Field:=1, Criteria1:="P04800"
.Copy Sheets("DONEES_EA").Range("D106101")
.AutoFilter 'ôte le filtre
End With
End Sub
Pour la cellule D106101 il faudrait faire définir sa position par la macro, qu'est-ce que c'est ?
Cette macro colle sur la 1ère cellule vide en colonne D et supprime les en-têtes de colonnes :
VB:
Private Sub Choix_Pol()
Dim dercel As Range
Set dercel = Sheets("DONEES_EA").Range("D" & Rows.Count).End(xlUp) 'dernière cellule renseignée
With Range("D1:T" & Range("D" & Rows.Count).End(xlUp).Row)
.AutoFilter Field:=1, Criteria1:="P04800"
.Copy dercel.Offset(1) 'colle sur la 1ère cellule vide
.AutoFilter 'ôte le filtre
End With
If Application.CountA(dercel.Resize(, 17)) > 0 Then
dercel.Offset(1).Resize(, 17).Delete xlUp 'supprime les en-têtes de colonnes
Else
dercel.Resize(, 17).Delete xlUp 'supprime la ligne vide
End If
End Sub
Cette macro colle sur la 1ère cellule vide en colonne D et supprime les en-têtes de colonnes :
VB:
Private Sub Choix_Pol()
Dim dercel As Range
Set dercel = Sheets("DONEES_EA").Range("D" & Rows.Count).End(xlUp) 'dernière cellule renseignée
With Range("D1:T" & Range("D" & Rows.Count).End(xlUp).Row)
.AutoFilter Field:=1, Criteria1:="P04800"
.Copy dercel.Offset(1) 'colle sur la 1ère cellule vide
.AutoFilter 'ôte le filtre
End With
If Application.CountA(dercel.Resize(, 17)) > 0 Then
dercel.Offset(1).Resize(, 17).Delete xlUp 'supprime les en-têtes de colonnes
Else
dercel.Resize(, 17).Delete xlUp 'supprime la ligne vide
End If
End Sub
Merci beaucoup Job75,
Le code marche bien, mais je voulais copier les données sur une autre feuille DONNEES_EA, je n'arrive pas à ajouter cette condition après .Copy dercel.Offset(1). En fait, mais données sont sur la feuille DONNEES et je veux les copier sur la feuille DONNEES_EA.
Merci ! Au post numéro 1 j'ai dit "J'ai un tableau sur la feuille DONNEES, je souhaite filtrer ces données par un numéro et copier la sélection sur la feuille DONEES_EA et ensuite désélectionner le filtre." Il s'agit de copier-coller entre 2 feuilles.