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 :

Inserer une ligne sur une zone verrouillée


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Inserer une ligne sur une zone verrouillée
    Bonjour,
    Je dois créer un tableau de suivi de référence, l'ajout de chaque ref se fait par un bouton qui insère une ligne en haut du tableau. pour chaque nouvelle ref entrée en colonne 3, la date et l'heure est ajouté automatiquement en A et B. Le souci c'est que j'aimerai verrouiller ces trois premières colonnes si elle sont "non vide" affin qu'il n'y ai pas de triche sur les horaires.

    J'ai trouvé un bout de code dans le genre qui me conviendrait mais j'ai du mal a l’adapter :
    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
     
       'Zone utilisée
      Dim ZoneUtilisée As String
      Dim MotDePasse As String
      'Plage utilisée sur la feuil1 de Excel
      ZoneUtilisée = "A1:Z500"
      'Mot de passe utilisé
      MotDePasse = "SESAME"
     
      'On deprotege la feuille par le mot de passe "SESAME"
      Feuil1.Unprotect MotDePasse
      'Verrouilles toutes les cellules de la plage
      Feuil1.Range("A9:C500").Locked = True
      'Deverouilles les cellules vides de la plage
      Feuil1.Range("A9:Z500").SpecialCells(xlCellTypeBlanks).Locked = False
      'Bloque la saisie des cellules non vides en protégeant la feuil1 par "SESAME"
      Feuil1.Protect MotDePasse
    Le soucis de ce code c'est que lorsqu'il marche, l'ajout de l'heure et de la date ne marche plus, de plus j'aimerai ne pas etre obliger de metre un mot de passe a chaque fois qu'on utilise le bouton "ajouter"


    avez vous une idée?
    je joint le fichier pour mieux comprendre
    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    bonjour,

    quand on insère une ligne, par défaut les cellules sont verrouillées.

    du coup le plus simple est peut être de jouer sur la protection de la feuille, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    'insert la selection
     
     ActiveSheet.Unprotect("toto")
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False
     
    'efface le contenu de la ligne dupliquée
        Selection.ClearContents
    'se positionne sur la cellule C9
        Range("C9").Select
     
    ActiveSheet.Protect ("toto")
    cordialement,

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bonjour, merci pour la réponse mais j'ai testé et au final je ne peux pas saisir de texte dans la cellule C9.

    Quand on insert une ligne il faut pouvoir saisir le texte de C9 à I9, par contre une fois la référence saisie en C9 il faut que les trois cellules A9, B9 et C9 se verrouillent. sinon en modifiant le contenu de C9 la date et l'heure change, hors se sont ces deux valeurs que je ne veux pas perdre.

    D'autre part le bouton de purge devra sélectionner toutes les lignes dont le statut est = à "Traité" pour les passer sur l'onglet "traité" mais la encore le soucis est que si je supprime une ligne, la ligne du dessous remonte et çà me change les valeurs de date et heure.

  4. #4
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour

    Pourquoi ne pas creer un formulaire de saisie ou seul les champs modifiables sont disponibles. On deverouille la feuille au moment de la saisie puis on reverouille la feuille dés la sortie du formulaire. Aucun accés n'est ainsi disponible au cellule date.

    ou bien deverouiller la feuille lors d'un changement de valeur en C, inserer les dates, puis reverouiller la feuille apres avoir changé le verouillage de A, B, et C. Ainsi il n'y a plus de possibilité de changer les valeurs desdites colonnes.

    La fonction worsheet_change peut etre amélioré de façon à obtenir ce que vous rechercher. Il faudra de toute maniére partir d'une feuille ou d'un classeur protégé, Excel ne reconnaissant les cellules verouillé que lorsque la feuille est protégé.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. Réponses: 2
    Dernier message: 18/11/2012, 11h25
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. [XL-2003] Affichage date du mois en cours sur une colonne et une ligne sur trois
    Par altra dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/08/2009, 07h51

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