Faire un tri sans oter la protection de la feuille excel

matthieu3032

XLDnaute Nouveau
Bonjour,

Je voudrais savoir comment faire un tri sans oter la protection de ma feuille excel.

En lisant quelques postes, j'ai cru comprendre que le seul moyen était à l'aide d'une macro sous vba. Ayant peu d'acquis en vba, je demande votre aide.
:eek:

Peut etre quelqu'un ici pourrait me fournir le code ?

Merci d'avance à tous.

Cordialement

Matthieu3032
 

jeanpierre

Nous a quitté
Repose en paix
Re : Faire un tri sans oter la protection de la feuille excel

Bonsoir matthieu3032,

Si tu as un bouton qui lance le tri par VBA uniquement (car le tri de la barre d'outils ne fonctionnera pas), tu peux mettre en début de ta procédure :

ActiveSheet.Unprotect ("ton mot de passe s'il y en a un")

et avant de sortir :

ActiveSheet.Protect ("ton mot de passe s'il y en a un")

Bonne nuit.

Jean-Pierre
 

ROGER2327

XLDnaute Barbatruc
Re : Faire un tri sans oter la protection de la feuille excel

Bonsoir à tous, bonsoir matthieu3032.
Lorsqu'on protège une feuille, Excel propose un grande variété d'options de protection. Pour autoriser le tri dans une une feuille protégée, il faut cocher Tri au moment de la protection.​
ROGER2327
 

jeanpierre

Nous a quitté
Repose en paix
Re : Faire un tri sans oter la protection de la feuille excel

Re, Bonsoir Catrice, ROGER,

Roger, exact mais à partir de 2002 ou plus sûr de 2003, mais comme l'on ne connaît pas la version de Matthieu3032, puisque son Profil n'est pas renseigné..... d'où ma solution minimale.

Bonne nuit.

Jean-Pierre
 

ROGER2327

XLDnaute Barbatruc
Re : Faire un tri sans oter la protection de la feuille excel

Re...
Objection retenue, jeanpierre. Je n'avais pas fait attention à l'absence d'indication sur la version utilisée.
Je profite de cette réponse pour réparer un oubli de mon précédent message. Autoriser le tri lors de la protection n'autorise à trier que des plages de cellules déverrouillées.​
Bonne nuit à vous.
ROGER2327
 

matthieu3032

XLDnaute Nouveau
Re : Faire un tri sans oter la protection de la feuille excel

Désolé pour le manque d'info : j'utilise excel 2003
Je viens de créer un bouton pour executer une macro à l'aide de votre lien puis je colle le code modifier selon mon besoin mais rien ne se produit. Je dois mal le faire.

Merci pour vos réponses !

Matthieu
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : Faire un tri sans oter la protection de la feuille excel

Re tous, avant dodo,

Peux-tu mettre un petit fichier représentatif de ton souci, macro incluse, ce sera plus simple.... (avec le cellules vérouillées et celles qui ne le sont pas)

A te lire demain maintenant.

Jean-Pierre
 

matthieu3032

XLDnaute Nouveau
Re : Faire un tri sans oter la protection de la feuille excel

Merci pour vos réponses, j'ai trouvé !

Voila la réponse dans mon cas :

Sub TRI()

Dim mdp As String

mdp = Sheets("nom de votre feuille").Range("A1").Value
ActiveSheet.Unprotect "mdp"
Range("A1:A100").Select
Selection.AutoFilter ' Désactive les filtres
Selection.AutoFilter ' Active les filtres
Range("A1").Select
ActiveSheet.Protect "mdp"

End Sub

Nouveau sur ce forum, je suis très enthousiaste de voir la rapidité des réponses et la patience des experts genre modos, avisés, etc... qui prennent le temps de répondre à des novices/amateurs/intermédiaires..

J'apprécie fortement votre engagement. Continuez comme ca et longue vie a ce forum dédié à excel

Merci a tous et bon week!
@+
 
Dernière édition:

matthieu3032

XLDnaute Nouveau
Re : Faire un tri sans oter la protection de la feuille excel

Arf, j'ai parlé trop vite. Ca à marché lors de la création mais une fois fermé le fichier cela ne marche plus. Quelqu'un peut t-il m'aider?

Mon problème: le tri marche pour les valeurs une à une mais ne fonctionne pas pour un tri croissant ou décroissant ???
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Faire un tri sans oter la protection de la feuille excel

Bonsoir Matthieu, le Fil, le Forum

Je regardais ce code, mais il coincerne L'AutoFilter et pas du tout le Sort ?

J'ai préparé ce mini code, pour un Sort basic sur la colonne où se situe la cellule active avec quelques tests anti-bug...

Code:
[COLOR=#0000ff]Option Explicit[/COLOR]
[COLOR=#0000ff]Public Const MDP As String = "MDP"[/COLOR]
[COLOR=#0000ff]
Sub Tri_Matthieu()
Dim SortAddress As String
With ActiveSheet
    .Unprotect MDP
            SortAddress = ActiveCell.Address(0, 0)
            
                'Petits Tests basic pour éviter les Bugs...
                If SortAddress = "" Then
                    MsgBox "Vous devez selectionner une cellule dans une des Colonnes à Trier"
                Exit Sub
                End If
                
                If Intersect(ActiveCell, Range("A1").CurrentRegion) Is Nothing Then
                    MsgBox "Vous devez selectionner une cellule dans une des Colonnes NON VIDE à Trier"
                Exit Sub
                End If

    .Range("A1").CurrentRegion.Sort Key1:=Range(SortAddress), Order1:=xlAscending, Header:=xlYes
    .Protect MDP
End With
End Sub
[/COLOR][SIZE=2][COLOR=#0000ff]
[/COLOR][/SIZE][SIZE=2][COLOR=#008080][/COLOR][/SIZE]

Ma projection est sur une feuille "base de données" standard avec un Heading en Row 1 et démarrant en Cellule "A1".

Pour lancer le code il faudra peut-être adjoindre un bouton sur la dîte feuille...

Bonne Soirée
@+Thierry
 

vbacrumble

XLDnaute Accro
Re : Faire un tri sans oter la protection de la feuille excel

Bonsoir à tous


Thierry : tu as perdu tes espaces dans l'Espace ? ;)

EDITION: désolé tu édites plus vite que ton ombre.

PS: ce message peut-être efface s'il vous plait. Merci
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Faire un tri sans oter la protection de la feuille excel

re Bonsoir

En parlant de bouton... Finalement pourquoi un bouton !

Voici la même chose en Macro Evènementielle, basée sur l'Event "BeforeDoubleClick"

Code:
Option Explicit
Private Const MDP As String = "MDP"

[COLOR=blue][B]Private Sub Worksheet_BeforeDoubleClick[/B][/COLOR](ByVal Target As Range, Cancel As Boolean)
Dim SortAddress As String
With ActiveSheet
    .Unprotect MDP
        If Intersect(ActiveCell, Range("A1").CurrentRegion) Is Nothing Then Exit Sub
            SortAddress = ActiveCell.Address(0, 0)
    .Range("A1").CurrentRegion.Sort Key1:=Range(SortAddress), Order1:=xlAscending, Header:=xlYes
    .Protect MDP
End With
Cancel = True
[COLOR=blue][B]End Sub[/B][/COLOR]

Il suffira ensuite de faire un double Click dans une des cellules de la Table à trier dans la colonne qui servira de Clef de Tri pour que tout se fasse automatiquement...

Il faut mettre par contre ce Code dans le Private Module de la Feuille en Question (Dans Excel Click Droit sur l'Onglet de la Feuille puis sélectionner "Visualiser le Code" et le copier coller dans ce Private Module de Feuille).

Bien à Vous
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 324
Membres
102 862
dernier inscrit
Emma35400