Filtrer certains onglets

Bonjour,

J'ai récupéré un fichier car il correspond à mes besoins. Mon seul souci c'est que j'ai plusieurs onglets et je n'ai pas besoin de filtrer dans tous les onglets comment puis je intégrer dans la programmation l'exclusion de fichier

( j'ai essayé de mettre "Select Case ActiveSheet.Name

Case "T1", "T2", "T3"

Exit Sub) je ne suis pas du tout sure.

.d'autre part pour faire plus joli et faciliter la lecture, le tableau qui est extrait je souhaiterai réaliser un quadrillage par contre chaque tableau a un nombre de ligne différent : est ce possible ?

Je vous mets un exemple. Pour autant mon fichier a 54 onglets dont la moitié soit les onglets "T" sont à exclure

merci

12copie-p1-copie.xlsm (229.38 Ko)

Salut cpin31,

une façon de faire...

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim sData As String, sSheet As String
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If Not Intersect(Target, Range("D6")) Is Nothing Then
    sData = Target
    iRow = Range("C" & Rows.Count).End(xlUp).Row
    If iRow > 24 Then
        Range("A25:F" & iRow).ClearContents
        Range("G25:R" & iRow).Interior.Color = xlNone
    End If
    iRow = 24
    For x = 1 To 3
        sSheet = Choose(x, "P1", "P2", "P3")
        With Worksheets(sSheet)
            For y = 1 To .Range("K" & Rows.Count).End(xlUp).Row
                If .Range("K" & y).Value = sData Then
                    iRow = iRow + 1
                    Cells(iRow, 3) = sSheet & "  -  " & y
                    Cells(iRow, 4) = sData
                    Cells(iRow, 5) = .Range("D" & y).Value
                    Cells(iRow, 6) = .Range("J" & y).Value
                    For Z = 1 To 12
                        Cells(iRow, 6 + Z).Interior.Color = .Cells(y, 12 + Z).Interior.Color
                    Next
                End If
            Next
        End With
    Next
End If
'
Application.ScreenUpdating = True
Application.EnableEvents = True
'
End Sub

A+

Bonjour,

Je te remercie mais je ne comprends pas tout. Est ce que je dois integrer cette programmation a la programation existante ? J'ai fait une essai mais cela ne marche pas, j'ai du faire une mauvaise manipulation : je débute sur vba.

merci pour votre aide.

Afin que je puisse progresser est il possible de faire une explication des lignes

encore merci

Salut cpin,

dans la feuille 'filtre des noms', tu remplaces ta procédure existante 'Sub Worksheet_Change' par celle-ci, simplement!

J'ai, par contre, un gros problème de vitesse d'exécution dont j'ignore l'origine alors que ça devrait se faire en une claquement de doigt.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim sData As String, sSheet As String
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If Not Intersect(Target, Range("D6")) Is Nothing Then               'si changement en [D6]
    sData = Target                                                  'sData = nom
    iRow = Range("C" & Rows.Count).End(xlUp).Row                    'fond de la colonne [C] pour nettoyage...
    If iRow > 24 Then                                               '... si c'est déjà rempli
        Range("A25:F" & iRow).ClearContents
        Range("G25:R" & iRow).Interior.Color = xlNone
    End If
    iRow = 24                                                       'préparation pour nouvel affichage
    For x = 1 To 3
        sSheet = Choose(x, "P1", "P2", "P3")                        'choix des feuilles à scanner...
        With Worksheets(sSheet)
            For y = 1 To .Range("K" & Rows.Count).End(xlUp).Row     '... jusqu'au fond de la colonne [K]
                If .Range("K" & y).Value = sData Then               'si cellule = sData (nom)
                    iRow = iRow + 1                                 'ligne d'affichage
                    Cells(iRow, 3) = sSheet & "  -  " & y           'nom feuille + ligne
                    Cells(iRow, 4) = sData                          'nom
                    Cells(iRow, 5) = .Range("D" & y).Value          'risque
                    Cells(iRow, 6) = .Range("J" & y).Value          'actions
                    For Z = 1 To 12                                 'couleurs
                        Cells(iRow, 6 + Z).Interior.Color = .Cells(y, 12 + Z).Interior.Color
                    Next
                End If
            Next
        End With
    Next
End If
'
Application.ScreenUpdating = True
Application.EnableEvents = True
'
End Sub

A+

re bonjour,

Quand je mets le programme directement dans mon fichier : il y a un bug sur la ligne "With Worksheets(sSheet)" la macro s'arrete.

merci pour ton aide

re bonjour,

Oublie le message précédent mais elle marche super bien. par contre sans être trop exigeante est il possible que dans la macro on rajoute une fois que le tableau est fait que les colonnes E et F soient renvoi à la ligne et que le tableau puisse avoir un quadrillage pour faciliter la lecture des collègues.

De plus parfois certaines actions ont deux responsables : est il possible que la macro prenne en compte, actuellement ce n'est pas le cas, est ce réalisable ou pas ?

Et encore merci

Salut,

tu peux me faire un exemple de présentation de ce que tu veux (disposition, autres responsables) ?

A+

Bonsoir

Votre programme est a merveille mais je vous joins un nouveau fichier avec l'exemple du tableau final en première page. D'autre part j'ai modifié dans P1 et P3 des lignes de responsables ou j'ai intégré deux noms. J'aimerai si possible que quand je recherche le travail de Mr Y il apparaisse dans le tableau à la fois Mr Y mais aussi les actions que Mr Y doit faire avec Mr Z et vis versa. J'espère avoir été claire et pas trop exigeante ; en vous remerciant par avance. Je ne maitrise pas assez pour arriver à faire cela mais j'essaie de comprendre avec votre programmation.

Mille merci

8copie-p1-copie.xlsm (231.75 Ko)

Salut cpin,

je vois bien les deux noms dans certaines cellules mais je n'imagine pas trop comment tu veux présenter concrètement les données dans le tableau : un exemple, stp!

Pour faciliter la reconnaissance de la présence de deux noms dans une cellule, plutôt que des espaces à gogo, utilise 'ALT + ENTER' pour passer à la ligne dans une même cellule.

A+

Bonjour

En fait dans mon exemple quand je sélectionne Mr X, je souhaiterai qu' il apparaisse toutes les lignes y compris les lignes ou il est en duo avec Mr B. En fait, je souhaite que les responsables puissent avoir en direct le tableau et quand il sélectionne leur nom, ils voient leur tache en sachant que certains ont des taches en commun et j'aimerai que chacun quand il sélectionne son nom par exemple Mr X il voit qu'il a une action à réaliser avec Mr B.

En fait si Mr X sélectionne son nom on devrait voir apparaître la ligne 4 P1 de mon exemple. Le tableau qui se construit dans l'onglet filtre des noms est bon mais de ce fait incomplet. J'espère que j'ai été claire dans mon explication.

Rechercher des sujets similaires à "filtrer certains onglets"