Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Protéger contre le tri mais pas contre la fonction filtre en VBA

dhc2fe

XLDnaute Nouveau
Bonjour,

ceci est mon premier post, et j'en profite pour remercier tous les participant(e)s de ce forum grâce auxquels j'ai pu résoudre bien des problèmes en lisant les fils de discussion résolus.
cependant cette fois-ci je n'ai pas trouvé de solution ^^

Dans un fichier que je ne peux pas joindre pour tes raisons de confidentialité, je cherche à interdire le tri des lignes à partir d'un moment dans ma macro, tout en permettant à l'utilisateur de filtrer par la suite. C'est à dire que la macro importe les données, les trie, bloque le tri (ce qui me pose problème), les traite de nouveau ; et qu'ensuite l'utilisateur devrait pouvoir utiliser la fonction filtre mais pas la fonction tri ensuite (car une fois les lignes triées autrement le fichier ne signifierait plus rien).

Merci d'avance pour vos idées!

Céline
 

Pierrot93

XLDnaute Barbatruc
Re : Protéger contre le tri mais pas contre la fonction filtre en VBA

Bonjour Céline,

sans voir le code et un extrait de fichier.. pas facile.... regarde peut être ceci, à placer dans le module "thisworkbook", permet au code de fonctionner sur feuille protégée.... se déclenche à l'ouverture du classeur.
Code:
Option Explicit
Private Sub Workbook_Open()
With Feuil1
    .EnableAutoFilter = True
    .Protect "toto", userinterfaceonly:=True
End With
End Sub

En espérant que j'ai bien compris ton problème.....

bon après midi
@+
 

dhc2fe

XLDnaute Nouveau
Re : Protéger contre le tri mais pas contre la fonction filtre en VBA

Merci pour ta réponse Pierrot93! j'ajoute donc quelques précisions

du coup je joins un extrait du fichier, mais il y a beaucoup de macros dedans j'ai peur que ca ne soit pas évident à comprendre pour quelqu'un qui ne connait pas le but de ce fichier :/

enfin toujours est-il que dans le fichier après macro (qui correspond à une étape intermédiaire dans le traitement des données, à partir de laquelle je veux empêcher le tri des lignes), les cellules colorées des colonnes E et F affichent le total des cellules correspondant à leur "clé" (colonne J) des colonnes AD et AH.

En fait chaque ligne correspond à un achat, et les colonnes AD et AH à une déviation par rapport au prix prévu ou de l'année dernière. Pour tous les achats d'une pièce et de son fournisseur (le code pièce et le code fournisseur faisant la clé), les colonnes E et F sont la somme de ces déviations, dont le détails est visible juste dessus.

C'est pourquoi le fichier ne serait plus lisible si on changeait l'ordre des lignes. Par contre il est courant de filtrer par couleur (pour ne voir chaque combinaison pièce-fournisseur qu'une fois), et comme filtrer par couleur et trier par couleur sont des fonctions proches dans Excel 2007 il est très rapide de faire une fausse manip :/

Dans le fichier avant macro, les lignes ne sont pas forcément triées dans l'ordre voulu, c'est pourquoi je voudrais protéger contre le tri au cours de l'exécution de la macro.

Merci beaucoup!
 
Dernière édition:

dhc2fe

XLDnaute Nouveau
Re : Protéger contre le tri mais pas contre la fonction filtre en VBA

oui désolée, mais officiellement je n'ai vraiment pas le droit de communiquer quelque fichier que ce soit, alors...

quand j'essaie le code :
Private Sub Workbook_Open()
With Verification_Report
.EnableAutoFilter = True
.Protect "toto", userinterfaceonly:=True
End With
End Sub


j'obtiens un message d'erreur comme quoi la variable "Verification_Report" n'est pas définie (pourtant c'est le nom de ma feuille ???)
et le problème reste que je voudrais protéger contre le tri au cours de la macro, mais sans doute que je peux copier ce code dans le cours de la macro ? (de "with" ´"end with" bien sür)

Merci encore
 

Pierrot93

XLDnaute Barbatruc
Re : Protéger contre le tri mais pas contre la fonction filtre en VBA

Re,

dans le code donné, "Verification_Report" est le "codename" de la feuille, celui que tu vois dans l'éditeur vba....
Si nom de feuille(de l'onglet), remplace :
Code:
With Verification_Report

par :
Code:
With Sheets("Verification_Report")
 

dhc2fe

XLDnaute Nouveau
Re : Protéger contre le tri mais pas contre la fonction filtre en VBA

Merci Pierrot93, le code fonctionne bien pour bloquer le tri. le problème est que ca bloque aussi le filtre
peut-etre n'est-ce pas possible de ne bloquer qu'une des deux fonctions (filtrer et trier) de l'Autofilter?

merci encore !
 

dhc2fe

XLDnaute Nouveau
Re : Protéger contre le tri mais pas contre la fonction filtre en VBA

ahhhhhh Excel 2007 nous joue encore des tours !
merci pour ton aide cependant, j'ai appris quelque chose d'utile pour une prochaine fois !
 

Pierrot93

XLDnaute Barbatruc
Re : Protéger contre le tri mais pas contre la fonction filtre en VBA

Re,

essaye comme ceci :
Code:
Option Explicit
Private Sub Workbook_Open()
With Feuil1
    .Protect "toto", userinterfaceonly:=True, AllowFiltering:=True
End With
End Sub
 

Discussions similaires

Réponses
16
Affichages
580
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…