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 :

[Excel] - protection cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Par défaut [Excel] - protection cellule
    Bonjour pour certains et Re pour les autres,

    Quelqu'un peut-il me dire la raison pour laquelle ma cellule "Macellule" ne se verrouille pas?

    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
    32
    33
    34
    35
    36
    Public Sub transfert()
    
    Application.ScreenUpdating = False
    Dim Mafeuille As Worksheet
    Dim Macellule As Range
    With Workbooks("Progr.xls").Sheets("MemoiresUFS")
        Set Mafeuille = Workbooks(.Range("H3").Value).Sheets(.Range("H2").Value)
        Set Macellule = .Range("H1")
    End With       '1
    With Workbooks("Progr.xls").Sheets("accueil")
        Mafeuille.Unprotect
        Mafeuille.Range(Macellule) = .[C1]
        Mafeuille.Range(Macellule).Offset(1, 0) = .[C2]
        Mafeuille.Range(Macellule).Offset(2, 0) = .[C3]
        Mafeuille.Range(Macellule).Offset(3, 0) = .[C4]
        Mafeuille.Range(Macellule).Offset(-1, 0) = .[B2]
        Mafeuille.Range(Macellule).Offset(-2, 0) = .[A4]
        If .[A5] = "AV" Then
            Mafeuille.Range(Macellule).Offset(-4, 0) = .[A3]
            Mafeuille.Range(Macellule).Offset(-5, 0) = .[A2]
            Mafeuille.Range(Macellule).Offset(-6, 0) = .[A1]
        End If
    
    End With
    
    With Workbooks("Progr.xls").Sheets("MemoiresUFS")
    Workbooks(.Range("H3").Value).Activate
    End With
    
    Mafeuille.Activate
    Macellule.Locked = True
    Range(Macellule).Offset(0, 1).Activate
    Mafeuille.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    
    Application.ScreenUpdating = True
    End Sub
    Si je regarde sa valeur avec un espion, au point '1, elle prend bien la référence de ma cellule active et à la fin de mon code, j'ai comme valeur "Out of context"

    Merci,

    Chewi

  2. #2
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    Bonjour,
    J'essaie de reproduire ton code, mais ignare que je suis , je ne sais pas ce que veulent dire les crochets [C1] etc... et le code bloque à la première de ces lignes. Eclaireras-tu ma lanterne pour que je puisse t'aider ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    A mon avis, tu devrais plutot faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Macellule).Locked = True

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par helios77
    A mon avis, tu devrais plutot faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Macellule).Locked = True
    Non, car Macellule est un Range.

    Par contre, je crois comprendre le but de la manoeuvre et notre ami pourrait essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Macellule.Value).Locked = True
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    Ah oui c'est vrai tu as sans doute raison

  6. #6
    Membre confirmé Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Par défaut
    Ouskel'nord:

    Quelques explications:

    Je travaille dans deux classeurs:
    Un qui me sert de "software" (Progr.xls) et l'autre (variable) qui est traité (Monclasseur). Toutes mes macros et mémoires sont stockées dans Progr.xls.

    Lorsque je quitte le fichier traité, je mémorise Monclasseur actif, Mafeuille active et Macellule active dans les cellules H1, H2 et H3 de la feuille "MemoiresUFS" du classeur "Progr".

    Il reprend donc dans ce code les valeurs mémorisées dans H1,H2,H3 pour réactiver et transférer à l'endroit où j'étais.

    Avec ceci:
    Citation:
    With Workbooks("Progr.xls").Sheets("MemoiresUFS")
    Set Mafeuille = Workbooks(.Range("H3").Value).Sheets(.Range("H2").Value)
    Set Macellule = .Range("H1")
    End With '1
    With Workbooks("Progr.xls").Sheets("accueil")
    Il reprend les valeurs mémorisées.

    Macellule n'est donc pas dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Progr.xls").Sheets("MemoiresUFS")
    Mais je vais y rechercher les valeurs pour référencer Macellule.

    J'avoue que c'est tordu mais je préfère passer par des cellules que de mémoriser les variables.

    alors que ma feuille dépend de
    Citation:
    Workbooks(.Range("H3").Value).Sheets(.Range("H2").Value)
    Non, mais elle y reprend les valeurs stockées.
    Si tu veux d'autes éclaircissements...


    AlainTech:

    Impeccable, ma cellule est bien protégée.

    Mais peux-tu m'expliquer la différence? (Donne un poisson à un homme...)

    Merci à tous ceux qui se sont penchés dessus!

    Chewi

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Comme je l'ai écrit, Macellule est un Range (suite au Set...) qui est une instance de la cellule H1 de la feuille MemoiresUFS.
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Macellule.Locked = True
    tu Lock cette cellule-là (H1).

    Or, MemoiresUFS.[H1] contient l'adresse de la cellule que tu veux locker.
    Il suffit donc d'écrire pour que ce contenu (l'adresse) se retrouve entre les parenthèses de Range.

    J'espère avoir été assez clair...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par cwain
    je ne sais pas ce que veulent dire les crochets [C1]
    Notation abrégée (et plus légère pour l'interpréteur) pour Range("C1").
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-Excel] - protection plage de cellule sur i feuilles
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/02/2007, 16h52
  2. [VBA EXCEL] Protection feuille avec filtre auto
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2006, 10h48
  3. Protection cellule et bouton de commande
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2005, 15h08
  4. Pilotage excel (couleur cellule)
    Par TheGoldViking dans le forum C++Builder
    Réponses: 1
    Dernier message: 14/04/2005, 10h59
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28

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