Sub Macro1()
Dim be As Range 'déclare la variable be (Boîte d'Entrée)
Dim col As Integer 'déclare la variable col (Colonne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cc As Workbook 'déclare la variable cs (Classeur Cible)
Set cc = Workbooks("Le_nom_du_Classeur_ouvert.xls") 'définit la classeur cible (à adapter à ton cas)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
'définit la variable be (génère une erreur si bouton "Annuler")
Set be = Application.InputBox("Cliquez sur une des cellules de la colonne à filtrer !", "FILTRE AUTOMATIQUE", Type:=8)
If Err <> 0 Then Exit Sub 'si une erreur a été générée, sort de la procédure
On Error GoTo 0 'annule la gestion des erreurs
col = be.Column 'définit la colonne col
cc.Sheets("Feuil1").Cells.Clear 'efface TOUT dans l'onglet "Feuil1" du classeur cc
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
Set pl = .Range("A").CurrentRegion 'définit la plage pl
.Range("A1").AutoFilter 'lance le filtre automatique
.Range("A1").AutoFilter Field:=col, Criteria1:="<>" 'filtre la colonne col, critère : non vides
'copie et colle les lignes visibles (colonnes A à F) dans l'onglet "Feuil1" du classeur cible cc
.Application.Intersect(pl.SpecialCells(xlCellTypeVisible), Columns("A:F")).Copy cc.Sheets("Feuil1").Range("A1")
'si col est supérieur à 6 copie et colle les lignes visibles de la colonne col dans l'onglet "Feuil1" du classeur cible cc
If col > 6 Then .Application.Intersect(pl.SpecialCells(xlCellTypeVisible), Columns(col)).Copy cc.Sheets("Feuil1").Range("G1")
.Range("A1").AutoFilter 'supprime le filtre automatique
End With 'fin de la prise en compte de l'onglet "Feuil1"
End Sub