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 :

Bloquer des cellules sans bloquer la feuille (Tableau avec Marco)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Par défaut Bloquer des cellules sans bloquer la feuille (Tableau avec Marco)
    Bonjour à tous,

    J'ai créé une base de donnée avec un formulaire de recherche. J'ai donc créé une macro qui va chercher les informations sur ma feuille 'Base de données' et les copie sur ma feuille 'Recherche de Ressource'.

    Tout fonctionne bien mais je ne peux pas protéger ma feuille, sinon la macro ne marche plus. Pourtant j'aimerais bloquer les premières cellules pour éviter les changements maladroit de la part des futurs utilisateurs.

    J'ai farfouillé un peu sur les forums et j'ai trouvé ceci :

    Il est possible d'écrire en VBA dans des cellules verrouillées à condition d'utiliser l'argument UserInterfaceOnly en lui donnant comme valeur True
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub T()
      Dim sht As Worksheet
      Set sht = ActiveSheet
      sht.Protect UserInterfaceOnly:=True
      Range("A1").Value = "Hello"
      Set sht = Nothing
    End Sub
    J'ai bien compris le principe mais je ne sais pas ou place ce petit code dans ma macro.. Pour que ce soit plus clair je vous joins mon fichier.
    Voici aussi la dite macro :
    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
    Sub FiltrerUneRessource2()
    '
    ' FiltrerUneRessource2 Macro
    '
        Range("B4:E5").Select
        Sheets("Base de données").Range("Ressources[#All]").AdvancedFilter Action:= _
            xlFilterCopy, CriteriaRange:=Range("B8:E9"), CopyToRange:=Range("A12:I12") _
            , Unique:=False
        Range("A13:H13").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 3
        Range("I13").Select
        Selection.NumberFormat = "m/d/yyyy"
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 1
        Range("B5").Select
    End Sub
    Base de données ressources et outils.xlsm
    Merci d'avance pour votre aide !
    Maureen
    PS : je suis nouvelle sur le forum, si le sujet n'est pas à la bonne place je le changerais =)

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    La code peut soit déverrouiller la feuille le temps d'opérer, soit s'autoriser à outrepasser la Protection avec le paramètre UserInterfecOnly
    https://docs.microsoft.com/en-us/off...ksheet.protect

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Par défaut
    Bonjour,

    Merci pour votre réponse
    Oui j'avais bien vu ce paramètre, mais comme je le disais je ne comprends pas ou je dois l'insérer dans ma macro : j'ai essayé dedans, avant, après, une partie de code, tout le code...

    J'ai aussi trouvé ça (à remanier pour que ça colle à ma base et enlever le mot de passe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Sub auto_open()
            Sheets(1).Protect Password:="moi", userinterfaceonly:=True
        [A1] = "coucou"
        End Sub
    J'ai essayé aussi de mettre : Protect.userinterfaceonly = True avant le formualire.

    Quoi que je fasse j'ai un message d'erreur (le plus souvent un problème de compilation)

    Voila, je ne suis pas une pro du VBA alors j'ai du mal à manipuler toutes ces requêtes ^^

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    RE

    Dans un premier temps essaye Unprotect en debut de code puis Protect en fin de code.

    Sinon quelque chose comme cela dans le module du Classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Worksheets("Feuil1").Protect UserInterfaceOnly:=True, Password:="Toto"
    End Sub

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Par défaut
    Citation Envoyé par 78chris Voir le message
    RE

    Dans un premier temps essaye Unprotect en debut de code puis Protect en fin de code.
    Alors je ne trouvais pas comment écrire ça dans mon code, et puis en relisant ta réponse j'ai eu une illumination !

    Pour ajouter ces codes en début et fin de formulaire il me suffit d'enregistrer à nouveau ma macro, cliquer sur ôter la protection au début puis cliquer sur protéger à la fin ! Et ça marche parfaitement ! Voilà, c'était aussi simple que ça ^^

    Merci de m'avoir éclairé et d'avoir pris le temps de répondre !

    Bonne journée,
    Maureen

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

Discussions similaires

  1. [XL-2016] Protéger des cellules sans verrouiller la feuille
    Par Vba14 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 24/03/2019, 11h03
  2. Bloquer modification manuelle des cellules sans toucher macros
    Par mia.555 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 01/02/2017, 15h04
  3. Identification des cellules sans formule
    Par Tifendro dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/06/2008, 21h45
  4. calculer le nbre des cellule en gras dans un tableau
    Par bouddine dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/02/2008, 00h37
  5. [DataGrid]Ajouter des cellules sans DataSource ?
    Par Filippo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/09/2007, 15h55

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