XL 2016 Faire apparaitre un tableau en fonction d'un choix déroulant

onicow

XLDnaute Nouveau
Bonjour à tous
Je voudrai de l'aide car je cherche à faire apparaître un tableau 1 ou un tableau 2 avec une liste déroulante

j'ai trouvé un fichier Excel avec une macro créée par Mr Claude Dubois qui correspond exactement à ce que je voudrais faire mais j'ai du mal à comprendre les lignes de la macro car je ne suis pas très doué en macro Excel.

Est ce que quelqu'un aurait la gentillesse de m'expliquer les différentes lignes afin que je puisse comprendre et adapter la feuille
Merci beaucoup

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("d2:e2")) Is Nothing Then
Application.ScreenUpdating = False
With Sheets("Base")
.Range("o2") = "=AND($a2=Résumé!$d$2,$b2=Résumé!$e$2)"
.Range("a1:j" & .[a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
.Range("o1:eek:2"), CopyToRange:=Range("d5:i5"), Unique:=False
.Range("o2").ClearContents
End With
End If
End Sub
 

Pièces jointes

  • MacroTbl.zip
    16.6 KB · Affichages: 8
Solution
Bonjour @onicow

Pourquoi un fichier zip quand le fichier fait 55 Ko, c'est bien se compliquer la vie ?

Pour la traduction je te propose ceci

VB:
Option Explicit 'Oblige la déclaration de toutes les variables

Private Sub Worksheet_Change(ByVal Target As Range)
''Macros par Claude Dubois pour "libel_69" Excel-Pratique le 15/02/10
    If Not Application.Intersect(Target, Range("d2:e2")) Is Nothing Then 'Si D2:E2 change
        Application.ScreenUpdating = False 'Bloque le rafraichissement de l'écran
        With Sheets("Base") 'Feuille Base
            .Range("o2") = "=AND($a2=Résumé!$d$2,$b2=Résumé!$e$2)" 'Formule sur feuille base en O2 pour le filtre ==>  =ET($A2=Résumé!$D$2;$B2=Résumé!$E$2)
            
            'copie la...

Phil69970

XLDnaute Barbatruc
Bonjour @onicow

Pourquoi un fichier zip quand le fichier fait 55 Ko, c'est bien se compliquer la vie ?

Pour la traduction je te propose ceci

VB:
Option Explicit 'Oblige la déclaration de toutes les variables

Private Sub Worksheet_Change(ByVal Target As Range)
''Macros par Claude Dubois pour "libel_69" Excel-Pratique le 15/02/10
    If Not Application.Intersect(Target, Range("d2:e2")) Is Nothing Then 'Si D2:E2 change
        Application.ScreenUpdating = False 'Bloque le rafraichissement de l'écran
        With Sheets("Base") 'Feuille Base
            .Range("o2") = "=AND($a2=Résumé!$d$2,$b2=Résumé!$e$2)" 'Formule sur feuille base en O2 pour le filtre ==>  =ET($A2=Résumé!$D$2;$B2=Résumé!$E$2)
            
            'copie la feuille base filtré sans doublon en D5:J5 de la feuille résumé (Les 2 lignes sont ensembles)
            .Range("a1:i" & .[a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            .Range("o1:o2"), CopyToRange:=Range("d5:j5"), Unique:=False
            
            .Range("o2").ClearContents 'Suppression formule en O2 de la feuille Base
        End With
    End If 'Sors de la condition si
End Sub

Merci de ton retour

@Phil69970
 

Discussions similaires

Réponses
7
Affichages
292
Réponses
2
Affichages
475