• Initiateur de la discussion Initiateur de la discussion francis79
  • 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 !

F

francis79

Guest
bonsoir,
j'utilise un tableau avec macros et bou boutons de commande macros sur le tableau
le tableau est en mode protection,donc impossibilité d'utilisr les filtres.
pour utiliser filtres,il y a deux solutions

-soit enlever protection feuille
-soit passer Contents:=False, dans la macro "afficher_personnel_présents"

mais le problème,c'est que toutes les colonnes sont déprotègées

je voudrais utiliser le filtre seulement sur la colonne I
alors que dans la macro je suis en AutoFilter Field:=1 soit colonne A
toute en étant en protection sur les autres colonnes

ci-dessous les macros

merçi de votre aide
francis

Code:
Public MdP As String
Sub auto_open()
Range("a10").Activate
ActiveSheet.Protect

End Sub
Sub auto_closed()
ActiveSheet.Unprotect

End Sub

Sub RAZ_présent()
'
' raz_CO Macro
' Macro enregistrée le 26/01/2009
'

'
    Range("A11:A70").Select
    Selection.ClearContents
    Range("a11").Select
    End Sub


Sub afficher_personnel_présents()
'
' Macro enregistrée le 26/01/2009
'
   
'
    ActiveSheet.Unprotect
    MdP = "zaza"
    
    Selection.AutoFilter Field:=1, Criteria1:="x", Operator:=xlAnd
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Sub afficher_tout_le_personnel()
'
' afficher_tous Macro
' Macro enregistrée le 26/01/2009
':

    ActiveSheet.Unprotect
    MdP = "zaza"
    
    
    
    Selection.AutoFilter Field:=1, Criteria1:="x", Operator:=xlAnd
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

    ActiveSheet.Unprotect
    password = "zaza"
    ActiveSheet.ShowAllData
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub


Sub RAZ_jours()
'
' RAZ_jours Macro
' Macro enregistrée le 26/01/2009
'
    Range("A11:A70").Select
    Selection.ClearContents
    Range("a11").Select
'
    Range("E11:E70").Select
    Selection.ClearContents
    Range("a11").Select
'
    Range("G11:G70").Select
    ActiveSheet.Protect
    Selection.ClearContents
    ActiveWindow.LargeScroll Down:=-9
    ActiveWindow.ScrollRow = 11
    Range("A10").Select
End Sub
 
Re : utilisation filtre

bonsoir à tous,

j'ai pas trop suivi votre fil mais quelque chose m'a interpellé

francis tu utilises une macro nommé auto_closed, si cette macro doit se déclencher à la fermeture du fichier il faut écrire :

Code:
Sub auto_close()

on ne met pas de d à la fin de close

quand on suit la logique des macros auto_open et auto_close, tu déprotèges ton feuillet à la fermeture et tu le reprotèges à l'ouverture, l'inverse je comprendrais (et encore) mais là je vois pas l'interet

a+
 
Dernière édition:
Re : utilisation filtre

re,
pour jeanpierre,
j'ai essayé ton code, mauvais fonctionnement

je sélectionne les personnes dans colonne A field=1
alors que ton code selectionne la collle I field=9
voir message précédent
francis
 
Re : utilisation filtre

Re...

autre chose :
Code:
ActiveSheet.Unprotect
    Password = "zaza"

si tu souhaites déprotéger un feuillet protégé par le mot de passe zaza
il faut écrire
Code:
ActiveSheet.Unprotect Password := "zaza"

mettre l'argument password à la ligne équivaut à créer une variable à laquelle tu affectes la valeur "zaza"

même chose avec
Code:
ActiveSheet.Unprotect
    MdP = "zaza"

a+
 
Dernière édition:
Re : utilisation filtre

re,
pour jeanpierre

utilisation tableau
1) je selectionne les personnes (a,b,c,d) par un "x" minuscule dans colonne A (field=1)
2) je clique sur le bouton afficher personnel présent
apparait seulement les personnes avec un "x"
3) je met une date dans colonne arrivé, une date dans colonne départ et nombre de jour s'affiche dans colonne I
en fonction des dates d'arrivé et de départ ,le nombre de jours varie en I
et c'est dans cette colonne que je veut le tri pour une disposition en décroissant
et que tout le reste soit protègé donc non modifiable sans un mot de passe

francis

je reprend contact demain
 
Re : utilisation filtre

re....

si j'ai tout compris :
Code:
Sub RAZ_présent()
' raz_CO Macro
' Macro enregistrée le 26/01/2009 par adc_ouvrard_f

    ActiveSheet.Unprotect Password:="zaza"
    Range("A11:A70").ClearContents
    ActiveSheet.Protect Password:="zaza"
    End Sub
Sub afficher_personnel_présents()
' afficher_présents
' Macro enregistrée le 26/01/2009 par adc_ouvrard_f
    ActiveSheet.Unprotect Password:="zaza"
    If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
    Range("A11:K" & [B65536].End(xlUp).Row).Sort Key1:=Range("I11"), Order1:=xlAscending
    Selection.AutoFilter Field:=9, Criteria1:=">0"
    ActiveSheet.Protect Password:="zaza"
End Sub
Sub afficher_tout_le_personnel()
' afficher_tous Macro
' Macro enregistrée le 26/01/2009 par adc_ouvrard_f
    ActiveSheet.Unprotect Password:="zaza"
    If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
    ActiveSheet.Protect Password:="zaza"
End Sub
Sub RAZ_jours()
' RAZ_jours Macro
' Macro enregistrée le 26/01/2009 par adc_ouvrard_f
    ActiveSheet.Unprotect Password:="zaza"
    Range("A11:A70,E11:E70,G11:G70").ClearContents
    ActiveWindow.LargeScroll Down:=-9
    ActiveWindow.ScrollRow = 11
    Range("A10").Select
    ActiveSheet.Protect Password:="zaza"
End Sub
si tous les jours de présence sont à zéro, on peut faire en sorte que rien ne se passe, il suffit d'jouter une condition
Code:
Sub afficher_personnel_présents()
' afficher_présents
' Macro enregistrée le 26/01/2009 par adc_ouvrard_f
if [I71] > 0 Then
    ActiveSheet.Unprotect Password:="zaza"
    If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
    Range("A11:K" & [B65536].End(xlUp).Row).Sort Key1:=Range("I11"), Order1:=xlAscending
    Selection.AutoFilter Field:=9, Criteria1:=">0"
    ActiveSheet.Protect Password:="zaza
End if
End Sub

bonne nuit à tous
 
Re : utilisation filtre

Bonsoir le fil,

Tu semblais tenir au filtre automatique, ne pouvoir modifier que celui sur la colonne I, c'est chose faite ci-joint.

J'ai fais mieux, pour éviter de tenter l'utilisateur, je n'affiche QUE le filtre automatique de la colonne I.

Bonne soirée

PS. : tu vois, avec une pièce jointe, les réponses sont tout de suite de meilleures qualitées et plus nombreuses!!! Maintenant, le plus dur pour toi, consistera à toutes les essayer et faire un mix de chacune pour avoir LE fichier de tes rêves 😉
 

Pièces jointes

Re : utilisation filtre

re,
bonjour,

pour excel-lent en particulier

je viens d'essayer ton fichier,mais je n'arrive à le faire fonctionner comme je veut
je voudrais utiliser le tri pour la colonne I seulement après avoir cliquer sur le bouton personnel présent.
avec ton code, lorsque je clique sur le bouton afficher filtre toute la liste apparait
comment modifier le code pour utiliser le tri croissant décroissant seulement dans la position personnel présent, c'est à dire qu'avec la liste avec un "x"

francis
 
Re : utilisation filtre

même genre de question par rapport au filtre automatique.
je voudrais copier une plage de cellules déjà nommée après un tri par filtre automatique. voilà le code

sub depart_ment ()
sheets("Feuil1").select
range("base_ville").select
selection.autofilter field:=2, criteria1:=département (ici département est le résultat d'une première listbox)
range("villes").copy (c'est la plage à copier après le tri)
range("J1").paste

qu'est ce qui cloche?
la macro bug et quand je vais voir sur la feuille le filtre est bien réalisé comme je le souhaite.
 
Dernière modification par un modérateur:
Re : utilisation filtre

Bonsoir Francis79,

francis79 à dit:
je voudrais utiliser le tri pour la colonne I seulement après avoir cliquer sur le bouton personnel présent.

Pb solutionné ci-joint!

J'ai laissé les macros "Afficher le personnel présent" - "Afficher tout le personnel" ainsi que "RAZ jours" et "RAZ présent".

Et j'ai mis ta demande complète (comme indiqué sur les boutons) dans les macros liés aux boutons :
-> "Afficher Filtre Nb Jrs pour le personnel présent"
-> "Enlever Filtre Nb Jrs pour le personnel présent"

J'ai volontairement scindé les deux, pour plus de clarté. Ainsi si tu veux comprendre, modifié, mixer, ... les codes des différentes macro, cela sera plus simple pour toi.

Bonne soirée
 

Pièces jointes

Re : utilisation filtre

Bonsoir B3lga,

B3lga à dit:
je voudrais copier une plage de cellules déjà nommée après un tri par filtre automatique

C'est vrai, je le reconnais, ta demande parle du même sujet que celui de Francis79, mais pour plus de clarté, il serait plus pratique que tu ouvre une nouvelle discussion!

Rendez-vous là bas.

Bonne soirée
 
Re : utilisation filtre

re,
pour excel-lent
merci de ton aide
le filtre fonctionne correctement, mais la fonction tri croissant décroissant
ne fonctionne pas
ce que je souhaite avec cette fonction c'est de remettre la liste des personnes présentes en fonction du nombre de jours de présence dans l'ordre décroissant

merci,francis
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
17
Affichages
1 K
Réponses
3
Affichages
443
Réponses
5
Affichages
687
Retour