EXCEL : faire un tri avec colonne verrouillée

dblf -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une feuille excel dans laquelle j'ai plusieurs enregistrements.

La colonne A génère un ID pour chaque ligne. Cet ID est généré à partir d'une formule du type
"=SI(OU(ESTVIDE(B7);ESTVIDE(C7));"";MAX(A$2:A6)+1)" c'est-à-dire que je fais un test de vérification de contenu sur 2 cellules, et si elles sont remplies, alors je prends le max de la colonne et j'incrémente de 1 (pour la première ligne, je ne prends pas le max mais j'affiche directement "1").

La colonne A est verrouillée (outil>Protection>Protéger la feuille) pour que les utilisateurs ne touchent pas à la formule.

La colonne B contient également des chiffres.

Lorsque j'effectue un tri sur la colonne B, excel me renvoi un erreur en me disant que je ne peux pas faire l'opération tant que la feuille est protégée. Visiblement, c'est la colonne A qui le gène. En fait je veux pas du tout trier la A quel que soit le tri des autres colonnes puisque le contenu est généré automatiquement...

Une idée sur la question?
A voir également:

5 réponses

dblf
 
En fait, en même temps que j'ai écris le message précédent, je me suis demandé si la solution ne serait pas de faire des appels dynamiques dans ma formule comme en VBA, du style
"=SI(OU(ESTVIDE(cells(0,1));ESTVIDE(cells(0,2)));"";MAX(A$1:cells(-1,0))+1)"

Malheureusement, cela ne fonctionne pas...
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonsoir,

tu ne précises pas ta version mais sur 2003, lorsque tu protèges ta feuille, tu as une liste d'actions que tu autorises à l'utilisateur (dont le tri...)

eric
0
dblf
 
Salut eriic et merci de ta réponse.

J'utilise excel 2003 et lorsque j'ai protégé ma feuille, j'ai été jusqu'à autorisé toutes les actions proposées pour voir le résultat. Ainsi, un utilisateur pouvait sélectionner les cellules protégées, visualiser le contenu mais il ne peut pas le modifier.

Et même en autorisant toues les actions (y compris le tri), ça ne fonctionne pas...

J'ai continué de chercher comment faire un appel dynamique à d'autres cellules dans une formule excel, et je n'ai toujours pas trouvé d'autres solutions que de passer par du VBA, ce que je n'envisage qu'en dernier recours.

Ça doit bien exister cette fonctionnalité, il faut juste trouver la syntaxe je pense.
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
As-tu sélectionné les colonnes concernées par le tri et déverrouillé les cellules (format de cellule / protection) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dblf
 
Salut Eriic,

J'ai bien fait attention de ne verrouiller QUE la colonne A.

Ca ne fonctionne pas quand-même...
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Chez moi, sur 2003 ça fonctionne...
Ne sélectionne que les colonnes concernées avant de lancer le tri, ou bien insère une colonne vide B pour éviter que la A soit incluse dans le tri.
J'ai testé avec protection feuille, pas classeur... et sans formule en A
eric
0
dblf > eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention  
 
Effectivement, en ajoutant une colonne entre A et B, le tri sur B fonctionne bien et la colonne A ne bouge pas (la formule s'applique donc parfaitement). Ca m'a poussé à faire de la bidouille (j'ai du modifier le code d'une macro qui s'appliquait sur les colonnes B, C et D) mais au final, ça fonctionne.
J'ai rétréci la nouvelle colonne au maximum pour la cacher, on à l'impression de passer de la A à la C directement ^_^

Sinon, j'essaie de comprendre à quoi cela est du? Deux colonnes côte à côte sont obligatoirement liées lors d'un tri?

En tout cas, merci pour tes réponses :).
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282 > dblf
 
Oui, par défaut excel considère que c'est la zone en cours que tu désires trier (et heureusement...).
Si tu n'en veux pas il faut sélectionner la plage concernée.
Et si tu es vba plus besoin d'ajouter de colonne, désigne la plage :
    Columns("B:E").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
ou
    [B2:E20].Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

eric
0