Coller uniquement valeur tableau filtré dans autre classeur
nassssou
-
nassssou -
nassssou -
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
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
A voir également:
- Specialcells(xlcelltypevisible).copy
- Tableau word - Guide
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
1 réponse
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:
cdlt
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
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
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