Filtrer, copier coller en VBA

tit32600

XLDnaute Nouveau
Bonjour à tous,
je vous sollicite pour une aide en VBA.
J'ai un fichier excel d'inventaire matériels. avec dans une feuille nommée "INVENTAIRE", qui comporte la liste des différents outils.
J'ai créé trois bouton, qui me permet de filtrer cette feuille par rapport à trois critère que l'on retrouve dans la colonne B.
La partie filtre fonctionne bien, mais je souhaiterais, qu'après le filtre, les feuille correspondante se mettent à jour.
exemple:
si j'utilise le bouton " Filtre Pince", les données correspondant à ce filtre, soit copié et collé dans la feuille "Liste_Pince".
et la même chose pour les deux autre filtres.

j'ai mis un exemple de mon fichier

Merci encore de votre réponse.

Titi32600
 

Pièces jointes

  • Essais_Filtre-VBA.xlsm
    33.2 KB · Affichages: 66

DoubleZero

XLDnaute Barbatruc
Bonjour, "tit32600, le Forum,

Comme ceci ?
VB:
Option Explicit
Private Sub Cle_Click()
    Columns(2).AutoFilter Field:=1, Criteria1:="Clé"
    Range("a:h").SpecialCells(xlCellTypeVisible).Copy Sheets("Liste_Cle").Range("a1")
    With Sheets("INVENTAIRE")
        If .FilterMode Then .ShowAllData
    End With
End Sub
Private Sub Pince_Click()
    Columns(2).AutoFilter Field:=1, Criteria1:="Pince"
    Range("a:h").SpecialCells(xlCellTypeVisible).Copy Sheets("Liste_Pince").Range("a1")
    With Sheets("INVENTAIRE")
        If .FilterMode Then .ShowAllData
    End With
End Sub
Private Sub Tournevis_Click()
    Columns(2).AutoFilter Field:=1, Criteria1:="Tournevis"
    Range("a:h").SpecialCells(xlCellTypeVisible).Copy Sheets("Liste_Tournevis").Range("a1")
    With Sheets("INVENTAIRE")
        If .FilterMode Then .ShowAllData
    End With
End Sub
A bientôt :)
 

Si...

XLDnaute Barbatruc
Bonsoir

Sans multiplier les boutons donc les macros attachées (sauf Module de Classe prévu)…
(fièvre assurée n'est-ce pas ÔÒ ? ;):D) .
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  With Feuil11
      If Sh.Name <> .Name Then
          Application.ScreenUpdating = 0
          .[B:B].AutoFilter 1, Sh.Name
          .[A2:H9999].SpecialCells(12).Copy Sh.[A2]        '9999 ou plus
          .[B:B].AutoFilter
      End If
  End With
End Sub
'pas utile sinon pour alléger grandement le classeur tout en évitant cette ligne dans la maco ci-dessus
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If Sh.Name <> "INVENTAIRE" Then Sh.Rows("2:9999").Clear
End Sub

Nota : les noms des onglets doivent correspondre exactement aux noms des outils (critères de filtre)
 

Pièces jointes

  • Copie Lignes filtées_VBA.xlsm
    30.7 KB · Affichages: 92

titi32600

XLDnaute Nouveau
Merci "SI", ta façon de rendre automatique la mise à jour des onglets "Tournevis, Pince, Clé" est très inintéressante, mais la réponse de "DoubleZero", me permet de choisir l'onglet à mettre à jour.

Le code fonctionne très bien. Mais je souhaiterais, quand je rajoute un nouvel outil dans l'onglet "INVENTAIRE", et que je met à jour l'onglet par son bouton correspondant, que ce nouveau outil soit rajouter dans la liste, sans changer les éléments déjà inscris.

Merci encore
 

titi32600

XLDnaute Nouveau
Salut DoubleZero,
Ta première solution correspondait exactement à ce que je souhaitais, j'avais mon onglet principal "INVENTAIRE", et les onglets secondaires,"Liste_Cle"; "Liste_Pince"... qui reprenaient, une partir du principal.
Dans ton deuxième exemple, je n'ai plus les onglets secondaires. Et c'est sur ces onglets secondaires, que je classerais avec d'autres critères les outils.
C'est pour cela, que si je rajoute, un nouvel outil dans le principal "INVENTAIRE", je souhaite dans le bouton correspondant, que ce nouvel outil soit ajouter dans son onglet correspondant, sans toucher à ceux déjà renseignés

Merci encore

titi32600
 

Si...

XLDnaute Barbatruc
Re Bon jour

Oh que tu as raison ma chère Òô ! Mais tant qu'à faire, on peut aussi éviter la nouvelle colonne o_O !

Titi, tu choisis l'outil en sélectionnant son onglet, non :oops: ?

Voilà un exemple avec l'onglet outil voulu. Bien sûr, il faudrait savoir quels renseignements supplémentaires tu veux y voir.

 

Pièces jointes

  • Copie de 00 - tit32600 - Filtrer-1.xlsm
    22.9 KB · Affichages: 52
  • Copie Lignes filtées_VBA.xlsm
    30.5 KB · Affichages: 53

titi32600

XLDnaute Nouveau
Salut Si

Comme indiqué plus haut, j'ai besoin de mes onglets "Liste_Pince", "Liste_Tournevis"...., et dans ton exemple, dès que je reviens dans l'onglet principal "INVENTAIRE", l'onglet créé lors du filtrage disparait.

La feuille "INVENTAIRE", ne me permet que d'enregistrer au fur et à mesure du temps des données. mais ce n'est pas une feuille que j'utilise ensuite.

Mes feuilles que je vais modifier et travailler ensuite, sont les onglets secondaire. "Liste........"

C'est pour cela , que j'utilise des boutons de mise a jour des onglets secondaires

Titi32600
 

Discussions similaires

Réponses
2
Affichages
110
Réponses
12
Affichages
287

Statistiques des forums

Discussions
312 078
Messages
2 085 108
Membres
102 779
dernier inscrit
wrond