Message d'erreur sur feuille protégée

Bonjour à tous,

J'ai un souci sur une feuille de mon tableur Excel ..

Cette feuille contient diverses cellules protégées car je ne veux pas qu'elles soient modifiées au cours de ma macro.

Je me suis dis qu'en protégeant ces cellules et qu'en exécutant ma macro, je pourrais ainsi modifier les cellules non protégées sans atteindre celles qui le sont.

Seulement voilà, lorsque j'exécute ma macro, Excel me renvois une erreur VBA "La cellule ou le graphique que vous essayez de modifier se trouve sur une feuille protégée"

J'ai conscience que ma feuille est protégée et j'aimerais que le code s'exécute seulement sur les cellules non protégées..

Existe t-il un moyen de contourner l'erreur et d'exécuter mon code ?

Je vous joins un fichier exemple pour que vous vous rendiez compte de la situation.

Merci !

25test.xlsm (17.01 Ko)

Bonjour,

Ta méthode de copier la colonne entière est quelque peu triviale ! L'utilisation de VBA devrait permettre un peu plus de finesse.

Par ailleurs tu dis vouloir déplacer mais en fait tu copies et colles en valeurs (secondairement pourquoi en valeurs ? puisqu'il n'y a déjà que des valeurs), ce qui laisse les données initiales à leur place (alors qu'un déplacement consiste à enlever pour mettre aillleurs).

Communiques donc ta vraie configuration si tu veux obtenir une solution adaptée...

Le cas échéant, VBA te permettrait de remettre les données modifiées à tort aussi facilement qu'elles ont été affectées. Mais cela reste une solution un peu brute, comme copier-coller d'ailleurs, alors que VBA permet de procéder autrement.

Cordialement.

Bonjour MFerrand,

Merci pour ta réponse rapide. Je ne peux pas communiquer ma vraie configuration.. Déjà car le fichier est trop volumineux, mais surtout car se sont des données sensibles et qui doivent rester confidentielles.

C'est donc pour ces deux raisons que je vous ai fournis un fichier "TEST".

Pour ce qui est de ma méthode j'ai conscience qu'elle est triviale, mais comme expliqué dans mon fichier "TEST" j'ai beaucoup de tableaux qui se suivent les uns après les autres et dont les valeurs se baladent à droite à gauche selon la macro utilisée.

J'avais précédemment fais des déplacements plage par plage dans ma macro, cela fonctionnait mais me donnait un énorme code un peu bancale..

L'avantage que j'avais trouvé dans la méthode que je veux utiliser ici était de pouvoir déclarer une variable "DernLigne" (car mes tableaux peuvent s'agrandir selon les cas) me permettant de sélectionner l'ensemble des valeurs dans chaque colonne, puis de les déplacer, le hic étant que je ne voulais pas déplacer les intitulés de mes colonnes.

En ayant fait quelques recherches j'ai vu que certains utilisaient des fonctions telle que "On error" afin de ne pas afficher le message et d'exécuter la macro comme il se doit, seulement je ne suis pas du tout à l'aise avec cette fonction et j'espérais que l'on puisse m'éclairer un peu plus sur cette dernière.

Il est vrai que le code que j'ai fournis ne ressemble pas à celui que j'ai dans mon fichier original, car je cherchais juste le moyen de contourner l'erreur afin de l'adapter par la suite à mon fichier de base.

Cependant, si cela peut aider je remets en pièce jointe mon fichier "TEST" avec le code utilisé dans mon fichier original.

Merci

EDIT :

Erreur dans le fichier, je viens de l'actualiser

26test.xlsm (18.25 Ko)

Tu n'as pas répondu sur le déplacement ou non d'une part.

D'autre part ton nouveau fichier introduit une nouvelle ambiguïté : tu reproduis tes colonnes à 2 colonnes d'intervalle et plus sur la suivante ?

Sans structure définie, on code n'importe quoi !

Et on ne fait pas une macro pour une utilisation unique ou pour la modifier chaque fois avant de s'en servir.

Il faut donc savoir si les tableaux ont tous la même largeur, s'ils commencent tous en colonne F, si les premières données à reproduire se trouvent donc en G, si on reproduit les données de la dernière colonne utilisée dans la suivante, et si du point de vue de l'utilisation des colonnes il y a homogénéité entre tous les tableaux.

Quand j'ai parlé de ta vraie configuration, je me fous de tes données, je veux savoir comment elles sont disposés et quels sont les critères décisifs d'intervention, soit les réponses aux questions ci-dessus et quelques autres...

Cordialement.

Effectivement après re lecture je m’aperçois que je n'ai pas été suffisamment clair sur certains points..

Tout mes tableaux ont le même nombre de colonnes et commencent tous à la même colonne. La mise en forme de mon fichier "TEST" n'a pas été faite au hasard.

L'idée de ma macro est la suivante :

J'ai plusieurs colonnes identifiés par des intitulés. Ici : V1, V2, ..., V7

Ma macro vient lire la ligne 8, jusqu'à tomber sur "V3"

Une fois la valeur trouvée, elle déplace d'un cran sur la droite l'ensemble des valeurs situées en dessous et après "V3" dans chaque tableaux.

Puisque les dessins et annotations sont plus parlants que les mots je t'ai remis mon fichier à jour avec diverses indications (notamment le "Avant/après" macro) pour t'aider à comprendre le résultat que j'aimerais obtenir.

Merci

23test.xlsm (21.62 Ko)

Tu ne déplaces pas, tu reconduis les mêmes valeurs sur la colonne voisine.

Et tu ne cherches pas "V3" (car la fois suivante ta macro ne fonctionnerait pas sans modification), tu cherches la première colonne "Vx" vide pour y placer les valeurs de la colonne précédentes !

Si le terme exact est "reconduire" alors oui c'est ce que je veux faire

Mais non je ne cherche pas la dernière colonne vide..

Je pensais que mon schéma était clair, mais il est vrai que j'ai pas préciser ce point

Je cherche à décaler les colonnes à un point précis (ici à "V3") pour ensuite pouvoir y insérer d'autres valeurs

Donc ma macro fonctionnerait la fois suivante

En gros je viens caler d'autres valeurs entre 2 colonnes, mais cela nécessite d'abord de reconduire les valeurs aux colonnes suivantes

Là tu dis que tu déplaces ! Déplacer c'est enlever...

Donc le shéma évolue tu déplaces systématiquement les valeurs de V3, ok !

La première fois tu vas les mettre en V4, mais la fois suivante ?


Comme c'est les mêmes valeurs partout, on ne peut rien déduire...


En reregardant... En fait il faut vider V3 ! C'est donc une insertion qu'il faut faire.

À chaque fois les valeurs iront en "V4", c'est juste qu'une colonne de plus sera déplacer vers la droite.

Jusqu'à ce que les tableaux soient pleins.

Seulement ce n'est pas une boucle, il faut laisser la colonne "V3" vide pour que l'utilisateur puisse insérer ses valeurs avant de relancer la macro

C'est une boucle, car il va falloir chercher les cellules contenant "V3" pour pouvoir des insertions entre deux cellules "V3" (et entre la dernière et la fin du tableau) : c'est donc une opération d'insertion répétée en boucle autant de fois qu'il y a de "V3".

Et pour la mener à bien la protection devra être levée pour être rétablie à la fin.

Cordialement.

D'accord, donc cela m'oblige à boucler sur des plages définies ?

Ici dans mon fichier "TEST" je devrais boucler sur les plages [I9:I13] et [I17:I20]

Ce que j'aurais voulu éviter

Euh ! Non ! Tu boucles sur la colonne I pour détecter les V3...

Mettons : n = dernière ligne utilisée en I, tu cherches le premier V3 ou s'il est fixe tu le connais préalablement, donc on a la ligne du 1er V3 : lv1 = 8, tu boucles de lv1+1 à n :

Quand tu tombes sur un V3, tu enregistres lv2 = ligne du V3. Et là tu opère une insertion colonne I de lv1+1 à lv2-1 avec le paramètre xlShiftToRight qui déplacera les colonnes vers la droite et laissera la colonne I vide.

Puis tu fais lv1 = lv2, et tu poursuis la boucle vers le V3 suivant pour recommencer.

En fin de boucle, tu n'auras pas de dernier lv2 puisque plus de V3, tu fais donc la dernière insertion après sortie de boucle de lv1+1 à n.

Le seul point restant éventuellement à régler est un test préalable pour voir si tu ne vas pas déborder de ton tableau et dans ce cas interdire l'opération, ainsi que compenser le déplacement vers la droite par une suppression équivalente dans la dernière colonne du tableau avec le cas échéant rétablissement des bordures...

Cordialement.

Rechercher des sujets similaires à "message erreur feuille protegee"