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 :

Empecher la modification de cellules [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut Empecher la modification de cellules
    Bonjour à tous,

    J'ai un pgm VBA qui me permet de lister plusieurs info importantes dans un onglet "Synthese" et je souhaite verrouiller l'accès à certaines cellules (date, N° sem, Origine si exterieur, modeles, clients et description du défaut) car, les personnes modifies ces info ce qui me génère des erreurs dans la suite de mon analyse.

    J'ai essayé en verrouillant les cellules et la feuille (avec Révision>protéger la feuille...) mais après, le lancement du vba donne un message d'erreur.


    Auriez vous une idée pour m'aider svp?

    Merci pour votre aide

    En PJ le document concerné
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    Bonjour,

    Si le fichier n'est pas partagé, vous pouvez passer par la protection mais ce qui implique que si vous changez le contenu des cellules par macro, il faudra mettre avant chaque entrée de données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Nom").Unprotect Password:="lemotdepasse"
    et après l'entrée des données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Nom").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="lemotdepasse"
    Si le fichier est partagé, il ne faut pas passer via cette méthode mais par la méthode:

    en déclarant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public Z as integer
    public PERMISSION as boolean
    il suffit ensuite de jouer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PERMISSION = false ou PERMISSION = true
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Z = 0 And PERMISSION = False Then
    Z = Z + 1
    X = MsgBox("Vous n'êtes pas autorisé à modifié cette plage de données", vbExclamation)
    Application.Undo
    End If
    Z = 0
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Bonjour bboy-eazy ,

    Merci pour votre aide mais, le programme (2nd méthode) ne fonctionne pas tt a fais comme je pensais.
    En effet, je voudrai pouvoir modifier ma colonne "Commentaires".
    De plus, le message box ne s'affiche pas quand je modifie mes données.

    Pourriez-vous me donner quelques indications svp?

    Merci pour votre aide

    Rob's

  4. #4
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    a mettre dans la feuille synthèse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Z = 0 And PERMISSION = False And (Not Intersect(Target, Range("A1:L5000")) Is Nothing Or Not Intersect(Target, Range("N1:BV5000")) Is Nothing) Then
    Application.ScreenUpdating = False
    Z = Z + 1
    X = MsgBox("Vous n'êtes pas autorisé à modifié cette plage de données", vbExclamation)
    Application.Undo
    End If
    Z = 0
    End Sub
    Déclarer dans le module 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public Z as integer
    public PERMISSION as boolean
    vous pouvez executer la macro deverrouillage pour deverrouiller la feuille (à mettre dans le module 1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Verrouillage()
           PERMISSION = false
    End Sub
    Sub Deverrouillage()
           PERMISSION = True
    End Sub
    Dans vos autres macros, si la macro ajoute des données dans la feuille, il faut bien mettre PERMISSION = true (ou Deverrouillage) en début de macro et PERMISSION = false (ou verrouillage) en fin de macro afin que les données puissent être ajoutées.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Mc_essai.zipMc_essai.zipBonjour bboy-eazy,

    Désolé pour cette réponse tardive.
    Je viens de faire les manip et cela ne fonctionne toujours pas.
    En effet, quand je valide ma saisie, j'ai le message box "Vous n'êtes pas autorisé à modifié cette plage de données" qui s'affiche et j'ai un débeuggage qui me surligne la ligne et rien ne s'affiche dans mon tableau.

    De plus, quand je supprime les lignes, j'ai le message qui s'affiche mais, les lignes s'efface quand même....

    Sais tu quel est le problème?

    Merci pour ton aide

    Rob's

  6. #6
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    C'est bizarre car chez moi cela fonctionne chez moi ... et si vous enregistrez le fichier sous Excel 2000-2003, il y aura moins de problème concernant l'application.undo. car je sais que au début que j'avais essayé ceci, j'avais aussi quelques problèmes mais je sais pas pourquoi il n'y en a plus eu...

    peut être simplemement la versio nd'excel qui va jouer sur ce problèpme..

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/09/2006, 17h51
  2. [VB6] Ouverture d'un fichier Excel et modification de cellules
    Par zackrel dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 19/05/2006, 11h55
  3. empecher les modifications d'une table
    Par moicats dans le forum Access
    Réponses: 2
    Dernier message: 05/04/2006, 16h39
  4. [C#] Comment empecher les modification dans un DataGrid ?
    Par layate dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/06/2005, 17h11
  5. Réponses: 1
    Dernier message: 02/12/2004, 11h51

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