Vba desactiver les filtres avant de copier coller

Résolu/Fermé
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 - 4 oct. 2012 à 22:36
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 - 10 oct. 2012 à 22:15
Bonjour,

Dernièrement j'ai mis en place grace à Patrice ce code
adapter à 5 classeurs différents.

Le problème c'est que ce copier coller concerne
des tableaux avec filtres et que si une personne oublie de retirer les filtres
ma base de donner devient incomplète.

Y a t il un moyen simple de retirer le filtre après l'ouverture du classeur et avant le copier .

Merci par avance de vos réponses qui m'aident à progresser

Charlyjack

Rappel du code

Sub Recapsynthese()
Dim wbkSource As Workbook
Dim wshSource As Worksheet
Dim wshCible As Worksheet

Set wshCible = ActiveSheet
wshCible.Cells.Delete
'Titre Colonne
wshCible.Range("A1") = "Société juridique"
wshCible.Range("B1") = "Société de Gestion"
wshCible.Range("C1") = "Fournisseur"

'Mise en forme
wshCible.Range("A1:C1").Interior.Color = 13434879
wshCible.Range("A1:C1").Font.Bold = True

'Ouvrir Classeur 1
DebutNomFichier = wshCible.UsedRange.Rows.Count
Set wbkSource = Workbooks.Open("O:\DD\PILOT BUDGETAIRE\PILOT FACT\2012\FLUX FIN\COMMANDE 2012\COMMANDE FLUX FIN 2012.XLS")
Set wshSource = wbkSource.Worksheets(1)
DerniereLigne = wshSource.UsedRange.Rows.Count
wshSource.Range("A18:AC" & DerniereLigne).Copy wshCible.Range("B" & wshCible.UsedRange.Rows.Count + 1)
wshCible.Range("A" & DebutNomFichier & ":A" & wshCible.UsedRange.Rows.Count) = ("FLUX FIN")
wbkSource.Close

'Ouvrir Classeur 2
DebutNomFichier = wshCible.UsedRange.Rows.Count
Set wbkSource = Workbooks.Open("O:\DDOP\PILOTAGE BUDGETAIRE\PILOTAGE FACTURATION\2012\FLUX FINANCIERS\COMMANDE 2012\COMMANDE SUPPORT 2012.XLS")
Set wshSource = wbkSource.Worksheets(1)
DerniereLigne = wshSource.UsedRange.Rows.Count
wshSource.Range("A18:AC" & DerniereLigne).Copy wshCible.Range("B" & wshCible.UsedRange.Rows.Count + 1)
wshCible.Range("A" & DebutNomFichier & ":A" & wshCible.UsedRange.Rows.Count) = ("SUPPORT ")
wbkSource.Close





A voir également:

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
5 oct. 2012 à 08:21
Bonjour,

Une facon de faire:

'Effacements des filtres
Sub Filtractif()
  Dim f As Filter
  'Nom de feuille a adapter
  Set ID = Worksheets("feuil1")
  If ID.AutoFilterMode Then
    indice = 0
    For Each f In ID.AutoFilter.Filters
      If f.On Then
        ID.ShowAllData
        Exit For
      End If
    Next
  End If
End Sub


Bonne suite
2
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 1
5 oct. 2012 à 21:59
Merci beaucoup, j'ai essayé et ça fonctionne en partie,
pour les 3 feuilles de mon premier classeur tout baigne, par contre ça bloque sur le second
ça beugue sur Set ID= Worksheets("nom de la feuille")
Je cherche encore mais grand merci pour cette aide
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
6 oct. 2012 à 09:24
Re,
Set ID= Worksheets("nom de la feuille") faites un copier/coller du nom de la feuille en allant sur la feuille, renommer, copier
0
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 1
10 oct. 2012 à 22:15
La macro ralentit pas mal mais ça fonctionne super bien, un grand merci
le copier coller du nom il fallait y penser !
0