XL 2010 filtrer une cellule copiée à valeur variable?

Fanch35830

XLDnaute Nouveau
Bonjour,
Je souhaite dans une macro, filtrer une valeur copiée variable (nom d'une personne) qui sera renseigné dans différents onglets?
N'y connaissant rien en VBA, quelqu'un pourrait m'aider?

dans le fichier joint en exemple simplifié
la vendeuse saisie son nom dans la case
puis clic sur la macro
dans les onglets suivant biere et vins, son nom est filtré faisant apparaitre ses précommandes clients.

je bloque juste sur cette étape il y en aura bien d'autres ensuite qui ne posent pas de pb.

Si vous avez la solution qui est relativement simple pour les connaisseurs faites moi signe
Merci d'avance pour votre aide
François
 

Pièces jointes

  • exemple net.xlsm
    111.7 KB · Affichages: 31

Chris401

XLDnaute Accro
Bonjour

Essaye avec ce code (à placer dans la feuille "MES CLIENTS")
Il se lance seul dès que la cellule C2 est validée

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
For Each Wsh In Worksheets(Array("biere", "vins"))
    With Wsh
        .Range("B2:S" & .Range("B" & Rows.Count).End(xlUp).Row).AutoFilter Field:=2, Criteria1:=Target
    End With
Next Wsh
End If
End Sub
 

Fanch35830

XLDnaute Nouveau
Bonjour Chris,
J'ai enregistré une macro avec l'enregistreur et j'ai copier le code que tu m'as donné mais cela ne fonctionne pas..
J'ai surement du faire une erreur en rajoutant d'autres onglets à filtrer également.
Redis moi ce que j'ai mal fait
merci pour ton aide
François

Sub filtrernom()
'
' filtrernom Macro
'
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
For Each Wsh In Worksheets(Array("BIERES SPECIALES", "VINS.CHAMPAGNES", "SOFT.ALCOOL.CAFE", "CDE EXCEPTIONNELLE"))
With Wsh
.Range("B2:S" & .Range("B" & Rows.Count).End(xlUp).Row).AutoFilter Field:=2, Criteria1:=Target
End With
Next Wsh
End If
'
End Sub
 

Chris401

XLDnaute Accro
Re

Tu n'as pas besoin d'une Sub
Tu places ce code directement dans la feuille "MES CLIENTS"

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
For Each Wsh In Worksheets(Array("BIERES SPECIALES", "VINS.CHAMPAGNES", "SOFT.ALCOOL.CAFE", "CDE EXCEPTIONNELLE"))
    With Wsh
        .Range("B2:S" & .Range("B" & Rows.Count).End(xlUp).Row).AutoFilter Field:=2, Criteria1:=Target
    End With
Next Wsh
End If
End Sub
 

Chris401

XLDnaute Accro
Bon, le fichier est passé à 3.5 Mégas juste en supprimant les mises en formes en trop (couleur cellules et/ou bordures)
Dans le code, j'ai ajouté que si la cellule C2 était vide, il n'y avait plus de filtre dans les feuilles.
 

Pièces jointes

  • PRECOMMANDES BRETAGNE BZH.xlsm
    3.6 MB · Affichages: 23

Chris401

XLDnaute Accro
Bonjour

Remplace le code par celui-ci

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$2" Then
Application.ScreenUpdating = False
For Each Wsh In Worksheets(Array("BIERES SPECIALES", "VINS.CHAMPAGNES", "SOFT.ALCOOL.CAFE", "CDE EXCEPTIONELLE"))
     With Wsh
     .Unprotect ("Chris401") 'Modifie le MDP
     If Target = "" Then
        .Range("B2:R" & .Range("B" & Rows.Count).End(xlUp).Row).AutoFilter Field:=2
    Else
        .Range("B2:R" & .Range("B" & Rows.Count).End(xlUp).Row).AutoFilter Field:=2, Criteria1:=Target
    End If
    .Protect ("Chris401") 'Modifie le MDP
     End With
Next Wsh
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 587
Membres
109 084
dernier inscrit
mizab