IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment protéger un workbook dynamique qui contient un "filldown" dans la macro ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut Comment protéger un workbook dynamique qui contient un "filldown" dans la macro ?
    Bonjour,

    Je me permets de poster de solliciter une aide pour un problème de macro excel dans l'analyzer.

    En effet, mon workbook contient plusieurs onglets (chaque onglet comporte une tache) qui disposent chacun différentes requêtes qui sont identiques (sauf au niveau du filtre). Ces requêtes contiennent des colonnes avec des formules. En fait, la feuille doit être protégée afin qu'elle ne puisse pas etre saisissable sauf sur 3 colonnes (jai fait outils> protection> permettre aux utilisateurs de modifier les plages). Par ailleurs, certaines colonnes contiennent une formule dedans.

    Sachant que je n'y arrive pas à faire un classeur "dynamique" avec la macro (unprotected puis protected à la fin), donc j'ai essayé de faire "manuellement" (outils> protection> protéger la feuille). J'utilise un Selection.FillDown pour étendre la formule, mais voici le message d'erreur que j'obtiens : "la cellule ou le graphique est protégé en lecture seule"

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If i = 31 Then
    Cells(i, 14) = "=RC[+5]-RC[-1]"
    End if
    rang = "N31:N" & i
    Range(rang).Select
    Selection.FillDown '<-- le probleme se situe ici
    Par conséquent, comment protéger un classeur qui contient des formules (afin que les utilisateurs ne saisissent pas dedans) mais qui doit etre également dynamique si l'on change de variable (les utilisateurs peuvent saisir dans certaines colonnes et il y aura un calcul dans d'autres colonnes) ??

    Merci d'avance pour la réponse

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Sachant que je n'y arrive pas à faire un classeur "dynamique" avec la macro (unprotected puis protected à la fin),
    Tu n'arrive pas pourquoi?
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If i = 31 Then
    Cells(i, 14) = "=RC[+5]-RC[-1]"
    End if
    rang = "N31:N" & i
    feuil1.unprotect 'si tu es sur la feuil1
    Range(rang).FillDown ' au passage j'enlève le select
    feuil1.protect

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    Merci pour ta réponse !

    Oui, je parle de classeur "dynamique" car les données de mon classeur sont restitués dynamiquement en fonction du périmètre choisi par l'utilisateur. En fait, il s'agit de l'analyzer qui utilise excel mais qui est un produit de chez SAP

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Oui, je parle de classeur "dynamique" car les données de mon classeur sont restitués dynamiquement en fonction du périmètre choisi par l'utilisateur. En fait, il s'agit de l'analyzer qui utilise excel mais qui est un produit de chez SAP

    A rien compris
    Revenons au bases, Ca marche mon code?

    C'est le coté dynamique qui ne marche pas ou le coté unprotect/protect?
    Dans le premier cas je risque de ne pas pouvoir t'aider si tu ne trouve pas un moyen de vulgariser ton explication pour un pauvre mathématicien/mécanicien comme moi

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    Merci pour ton retour !

    Donc, oui ton code marche très bien mais en revanche, je ne veux pas que cela me protège toute ma feuille pour chaque calcul étiré jusqu'à la fin du tableau

    En fait, je voudrais que mon classeur soit protégé. J'ai l'impression que la macro ne s'exécute pas bien car justement parce que le classeur est protégé ! Il y a des calculs d'où l'erreur au niveau du 'filldown'.

    Voici le bout de code qui pose soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
     
       If i = 31 Then
            'Calcul Colonne N
            Cells(i, 14) = "=RC[+5]-RC[-1]"
            'Calcul Colonne O
            Cells(i, 15) = "=RC[-4]+RC[-3]+RC[-1]"
            'Calcul Colonne S
            Cells(i, 19) = "=RC[-3]+RC[-2]+RC[-1]"
            'Calcul Colonne T
            Cells(i, 20) = "=RC[-1]-RC[-5]"
        End If
     
        'Colonne N
        rang = "N31:N" & i
        Range(rang).Select
        Selection.FillDown
     
        'Colonne O
        rang = "O31:O" & i
        Range(rang).Select
        Selection.FillDown
     
        'Colonne S
        rang = "S31:S" & i
        Range(rang).Select
        Selection.FillDown
     
        'Colonne T
        rang = "T31:T" & i
        'Range(rang).Select
        Selection.FillDown
    Je ne sais pas si je suis clair

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    dans ce cas commence ta macro par
    feuil1.unprotect

    et juste avant le end sub
    feuil1.protect

    Si ta feuil est protégé il faut la déprotéger pour modifier le contenu d'une cellule (par pour le lire)
    Tu peux aussi autoriser la modification de certaine cellule même avec un classeur protégé
    (format de cellules; onglet protect décocher vérouiller)

    remarque j'ai eu se problème j'utilisais le worksheet change et cela protégeai ma feuil au milieu d'un macro. Donc assure toi que rien ne vienne remettre la protection "en cours de route"

    Edit : je crois que je ne suis pas très clair sur ce coup désolé la journée est longue

Discussions similaires

  1. Comment utiliser un fichier .java qui contient un package
    Par mobi_bil dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 01/03/2009, 13h30
  2. Réponses: 9
    Dernier message: 24/06/2008, 09h45
  3. Réponses: 8
    Dernier message: 02/05/2008, 10h33
  4. Réponses: 2
    Dernier message: 20/01/2007, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo