Macro Excel

Résolu
Bonjour,

Je dois créer un formulaire que beaucoup de gens utiliseront dans Excel. Au bout de chaque ligne
je vais créer un bouton pour qu'ils puissent réserver. Mon problème est que je ne voudrais pas que d'autres utilisateurs viennent modifier ce que un utilisateur aura inscrit. Je voudrais donc que lorsque l'utilisateur cliquera sur le bouton "réserver" les cellules qu'il aura complétées se verrouilleront. Est-ce possible? Si oui, les étapes à suivre seraient grandement appréciées.

Merci,

4 réponses

  1. Vous faites un pointeur. Lorsque'une case est réservée la première fois le pointeur (une cellule sur une autre feuille ou fichier) passe à 1.
    Ensuite à chaque fois que quelqu'un tape ou essaye de modifier si le pointeur est à 1 la case revient avec déjà réservé ou autre alerte.
    La feuille des cellules pointeuses sont verrouillées.
    Vous pouvez inventer des pointeurs pour n'importe quoi.

    A+
    0
    1. Je suis pas très connaissante dans ce domaine. Comment fait-on un pointeur?
      0
      1. Contributeur
        Bonjour,

        Il faut protéger ta feuille.
        Au départ toutes les cellules sont verrouillées, il faut déverrouiller celles qui recevront les données (clic-droit sur ta sélection puis format de cellule).
        Pour verrouiller une sélection en vba c'est par exemple :
        [B3].locked=true
        ou worksheets("Feuil3").[B3:F3].locked=true

        Lors de la validation tu testes avec :
        if [B3].locked=true then
        'traitement cellule verrouillée
        else
        'traitement cellule libre
        endif

        eric
        0
        1. Modérateur
          Salut eriiic, syl vie,
          En plus de la protection de la feuille, je te suggère également de la rendre "invisible".
          Pour cela :
          Sheets("Feuil3").Visible = xlVeryHidden
          permet de vraiment masquer ta feuille car elle n'apparait même pas dans le menu Format/Feuille/Afficher...
          Pour masquer simplement une feuille :
          Sheets("Feuil3").Visible = False
          Par contre, après pour l'utiliser par macro il te faudra procéder par "With" :
          With Sheets("Feuil3")
              .B3:F3].locked=true 
          End With
          pour reprendre l'exemple d'eriiic.
          0
        2. j'obtiens un message d'erreur d'exécution '1004' Impossible de définir la propriété Locked de la classe Range
          0
        3. Contributeur
          Bonjour,

          Sans ton code difficile de répondre...
          [B2:C5].Locked = False marche très bien par exemple

          eric
          0
      2. Merci à tous, j'ai finalement trouvé mon erreur... Plutôt que d'écrire Locked dans mon code, j'avais écrit Lock...
        0