Coller uniquement valeur tableau filtré dans autre classeur

Fermé
nassssou - 14 févr. 2014 à 12:39
 nassssou - 16 févr. 2014 à 17:52
Bonjour,

J'ai un peu de mal avec mon code VBA (j'utilise svt l'enregistreur).
Je filtre les données d'un onglet et je veux coller uniquement les données visibles/filtrées dans un autre classeur et le sauvegarder dans un dossier. Je veux faire cela autant de fois que j'ai de noms dans ma colonne filtrée sur le nom.

(je veux aussi mettre en nom de fichier le mois précédent et l'année en cours)

Mais avec mon code, le tableau est collé mais avec toutes les données.

Voici mon code

Sub Macro10()
'
' Macro10 Macro
'
Dim chemin As String
chemin = "K:\65-11_RM_CPTGE_PROV_2014\Permanents et projets\Test relance\"
'

Sheets("Base Miro").Select
ActiveSheet.Range("$A$3:$IL$12000").AutoFilter Field:=45, Criteria1:="PIERRE"
Sheets("Base Miro").Select
ActiveSheet.Range("$A$3:$IL$12000").Select
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.SaveAs Filename:=chemin & " PIERRE " & Format(Date, "mm-dd")
ActiveWindow.Close
ActiveWorkbook.Save

Sheets("Base Miro").Select
ActiveSheet.Range("$A$3:$IL$12000").AutoFilter Field:=45, Criteria1:="COQ"
Sheets("Base Miro").Select
Sheets("Base Miro").Copy
ActiveWorkbook.SaveAs Filename:=chemin & " COQ " & Format(Date, "mm-dd")
ActiveWindow.Close
ActiveWorkbook.Save

End Sub

1 réponse

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
15 févr. 2014 à 11:07
Bonjour,
Pour ne sélectionner et copier que la zone filtrée, avec toutes les colonnes du tableau.
en supposant que le tableau commence à la ligne 3, entêtes compris:
    NbCol = [IV3].End(xlToLeft).Column 'recherche la dernière colonne.    Range("_FilterDataBase").Resize(, NbCol).SpecialCells(xlCellTypeVisible).Copy
puis sélectionnez uniquement la cellule à partir de laquelle sera recopié le tableau,(inutile de balayer toute une surface égale à la surface du tableau).
cdlt
0
Bonjour,

Merci beaucoup Frenchie83 pour votre réponse.
En mettant votre code j'ai bien que les données filtrées visibles (ce que j'arrivais à faire).
Désolé, je me suis mal expliquée, je veux que ca filtre sur le critère mais aussi qu'on ait pas accès aux autres données non filtrées.

Merci d'avance pour votre aide.
Cdt
0
Re Frenchie83,

Finalement, j'ai contourné mon problème en supprimant les lignes qui ne m'intéresse pas.

Sub macro11()
Dim chemin As String
chemin = "Macintosh HD:Users:nassssou:Desktop:DEFI :"
Sheets("Base").Select
ActiveSheet.Range("$A$2:$IL$12000").AutoFilter Field:=2, Criteria1:="PARIS"

With ThisWorkbook.Sheets("Base")
'je précise le nom de la feuille
For i = .Range("B" & .Rows.Count).End(xlUp).Row To 3 Step -1
'je travaille sur la colonne B
'Rows.count 'permet de retourner le nombre de ligne de la plage range
If .Range("B" & i).Value <> "PARIS" Then
.Rows(i).Delete
End If
Next i
End With
ActiveWorkbook.SaveAs Filename:=chemin & " PARIS " & Format(Date, "mm-dd")
ActiveWindow.Close
ActiveWorkbook.Save
End Sub

Encore merci
0