Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/02/2012, 15h35   #1
Invité de passage
 
Femme
Inscription : janvier 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : janvier 2012
Messages : 13
Points : 3
Points : 3
Par défaut Feuille protégée - filtre non actif

Je rame, je rame, je rame...

J'ai un fichier Excel qui comporte 2 feuilles.

La macro suivante permet de copier certaines colonnes de la feuille 1 sur la feuille 2 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Filtrepa()
 
  Dim Lig     As Long
  Dim Col     As String
  Dim NbrLig  As Long
  Dim NumLig  As Long
 
  Sheets("2").Activate
  Col = "K"
  NumLig = 1
  With Sheets("1")
  NbrLig = .Cells(65536, Col).End(xlUp).Row
  For Lig = 2 To NbrLig
    If .Cells(Lig, Col).Value = "x" Or .Cells(Lig, Col).Value = "y" Then
       .Range("A" & Lig & ":K" & Lig).Copy
    NumLig = NumLig + 1
    Cells(NumLig, 1).Select
    ActiveSheet.Paste
    End If
    Next
End With
 
End Sub
La feuille 2 est protégée.
Pour utiliser les filtres malgré tout, j'ai inscrit le code suivant :
Code :
1
2
3
4
5
6
7
Private Sub Workbook_Open()
With Sheets("A")
    .Protect password:="test", DrawingObjects:=True, _
        contents:=True, Scenarios:=True, userinterfaceonly:=True
    .EnableAutoFilter = True
    End With
End Sub
Je suppose qu'il y a une incohérence quelque part parce que mes filtres ne peuvent pas être utilisés quand la feuille et protégée et la macro ne fonctionne plus non plus...

Merci d'avance de votre aide. Ce serait super si vous pouviez m'aider...
Killie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 17h09   #2
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 700
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 700
Points : 1 460
Points : 1 460
Bonjour,

1 - Tu dis que la feuille 2 est protégée. Au vu de ton premier code, cette feuille porte le nom "2".
Dans ton deuxième code, tu écris que cette feuille porte le nom "A" (With Sheets("A")).
Comment se nomme cette feuille 2 ?

2 - A l’ouverture du classeur, tu protèges la feuille 2.
Pour autoriser l’utilisation du tri et du filtre automatique, tu dois spécifier
AllowSorting:=True, AllowFiltering:=True.

3 - Ta feuille 2 étant protégée, il n’est pas anormal que tu ne puisses plus exécuter la procédure Filtrepa qui demande à modifier le contenu de la feuille 2.

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 17h34   #3
Invité de passage
 
Femme
Inscription : janvier 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : janvier 2012
Messages : 13
Points : 3
Points : 3
Merci beaucoup pour cette réponse.

1) effectivement, erreur de recopie, la page 2 se nomme bien "2"
2) oui, je pense que je ne peux activer la macro uniquement lorsque la feuille n'est pas protégée. Ça ne me posera pas de problème. En revanche, il faudrait absolument que les filtres soient utilisables lorsque la feuille est protégée.
Peux-tu stp m'indiquer l'endroit où ajouter :

AllowSorting:=True, AllowFiltering:=True.

Merci encore.
Killie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 18h59   #4
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 700
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 700
Points : 1 460
Points : 1 460
Voici un exemple que tu pourras adapter.

A l’ouverture du classeur (procédure Workbook_Open placée dans le module ThisWorkbook), la feuille 2 est protégée. L’autorisation pour le tri et le filtrage est accordée et si besoin le filtre est activé.
Code :
1
2
3
4
5
6
7
8
9
Private Sub Workbook_Open()
    With Sheets("2")
        .Protect Password:="test", DrawingObjects:=True, _
        Contents:=True, Scenarios:=True, userinterfaceonly:=True, _
        AllowSorting:=True, AllowFiltering:=True
        .EnableAutoFilter = True
        If Not .AutoFilterMode Then .Range("K1").AutoFilter
    End With
End Sub
Dans la procédure Filtrepa, la feuille 2 est déprotégée avant copie des lignes. Elle est à nouveau protégée avant de sortir de la procédure.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Option Explicit
Sub Filtrepa()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
 
    Set Ws1 = Worksheets("1")
    Set Ws2 = Worksheets("2")
    Ws2.Unprotect ("test")
    Col = "K"
    NumLig = Ws2.Range(Col & Ws2.Rows.Count).End(xlUp).Row + 1
    NbrLig = Ws1.Cells(65536, Col).End(xlUp).Row
    For Lig = 2 To NbrLig
        If Ws1.Cells(Lig, Col).Value = "x" Or Ws1.Cells(Lig, Col).Value = "y" Then
            Ws1.Range("A" & Lig & ":K" & Lig).Copy Destination:=Ws2.Cells(NumLig, 1)
            NumLig = NumLig + 1
        End If
    Next
    Ws2.Protect Password:="test", DrawingObjects:=True, _
        Contents:=True, Scenarios:=True, userinterfaceonly:=True, _
        AllowSorting:=True, AllowFiltering:=True
    Set Ws1 = Nothing
    Set Ws2 = Nothing
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 20h47   #5
Invité de passage
 
Femme
Inscription : janvier 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : janvier 2012
Messages : 13
Points : 3
Points : 3
Encore merci pour ces suggestions.

AllowSorting:=True, AllowFiltering:=True ne fonctionnent pas sur ma version d'Excel qui est antérieure à 2003.


Cette discussion :

http://www.developpez.net/forums/d1171363/logiciels/microsoft-office/excel/macros-vba-excel/configuration-protection-xl2000-vs-xl2007/[/URL]

avait déjà évoqué ce problème...

Lundi, je tenterai sur une version d'Excel plus récente.
Je reviendrai peut-être à nouveau vers vous....

En tous les cas, mille mercis, c'est très sympa de m'aider.
Killie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 20h07   #6
Invité de passage
 
Femme
Inscription : janvier 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : janvier 2012
Messages : 13
Points : 3
Points : 3
Je confirme : impossible de faire fonctionner cette macro avec un EXCEL inférieur à 2003.

Petite pirouette : donner des droits d'écriture ou de lecture aux différents utilisateurs...

Merci tout de même pour cette aide qui m'a permis d'avancer !
Killie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h54.


 
 
 
 
Partenaires

Hébergement Web