Filtrer, copier coller en VBA

  • Initiateur de la discussion Initiateur de la discussion tit32600
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 🙂
 
Bonsoir

Sans multiplier les boutons donc les macros attachées (sauf Module de Classe prévu)…
(fièvre assurée n'est-ce pas ÔÒ ? 😉😀) .
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

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
 
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
 
Re Bon jour

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

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

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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
842
Retour