Insertion de lignes dans un tableau en tenant compte des semaines

Pour effectuer la modification de ces cellules, étant donné que je suis le seul à avoir les droits, je n'ai juste qu'à déprotéger la feuille en tapant mon code et puis c'est tout, non ?

Exact oui.

Maintenant on peut adapter les codes pour ne pas avoir à mettre votre mot de passe partout
Pour cela je dois savoir les noms des codes que vous avez dans chaque module sur votre vrai fichier.

De mon coté j'ai ceci :

Module 1 : Sub Nouvelle_DEM(), Sub Mise_en_forme(), Sub Ajout_couleur, Sub trier() et la Function
Module 2 : Sub maj(i As Integer) et Sub Plannning
Module 3 : renumerotation

Nous sommes bien d'accord que vous me demandez le code qui permet de protéger ou déprotéger la feuille et non pas pour protéger les codes VBA ?

Sinon, pour répondre à votre question, les noms des codes sont :
Module 1 : Sub Nouvelle_DEM(), Sub Mise_en_forme(), Sub Ajout_couleur, Sub trier() et la Function ListSort
Module 2 : Option Explicite, Sub Planning() et Sub maj(i As Integer)
Module 3 : renumerotation

Nous sommes bien d'accord que vous me demandez le code qui permet de protéger ou déprotéger la feuille et non pas pour protéger les codes VBA ?

Oui on est d'accord

L'idée est d'éviter que quelqu'un puisse exécuter certains codes en allant par le menu developpeur --> icône macro ou en allant par menu Afffichage --> icône macro

Voici ce que vous pouvez faire dans le module 2 (Important car c'est le seul qui contient des macros appelées depuis d'autres codes)

1. En dessous d'Option explicit, ajoutez ceci

Option Private Module
Public Const Adm  As String = "123"

2. Parcourez toutes les macros et à chaque Unprotect ou Protect, ajoutez --> Adm. exemple dans la sub planning au début vous aurez ceci :

Feuil1.Unprotect Adm

et avant de End sub vous pouvez rajoutez ceci :

Feuil1.Protect Adm

NB :
- dans le code Planning, il y a une instruction "ActiveSheet.Unprotect" au milieu. Vous pouvez la supprimer
- vous pouvez changer ADM par autre chose si vous voulez. Le principal est que cela se retrouve dans chaque instruction de protection
- Dans la ligne proposée plus haut, le mot de passe est --> 123, vous pouvez le remplacer par le vôtre en laissant les guillements

Cordialement

J'ai suivi à la lettre vos modifications et le test fonctionne mais j'ai du lancer une mise à jour par le bouton que que le mdp soit pris en compte
Cela fonctionne mais elle se reprotège dès que je change de cellule entre Q et W ou effectué un entrée pour valider

J'ai 2 derniers points

Point 1 : Est-il possible en colonne U, de retirer systématiquement le S pour Semaine lorsque qu'il n'y à pas de chiffre.
A ce jour, si une erreur de frappe est effectué dans une de ces cellules de cette colonne et que l'on supprime le chiffre indiqué, le S reste automatiquement

Point 2 : A partir de la colonne X, j'ai la barre colorée qui apparaît au moment où j'informe l'ensemble des renseignements entre Q et W.
Pour pouvoir noter des informations en U et V, je dois regarder au préalable la place que prends cette barre colorée dans la feuille calendrier pour pouvoir donner ensuite le délai (Sem. / Date). Pas évident surtout quand vous avez des délais pouvant aller sur x jours.
Il faudrait donc que j'ai dans un 1er temps l'information (la barre coloré avec info de la colonne C et F) pour que je puisse copier une 1ère fois cette barre et la placer dans le calendrier. Puis une fois que j'ai une visualisation du délai dans le "calendrier", je l'indiquerai en U et V ce qui mettra à jour la barre avec l'élément en V.
Je la copierai à nouveau dans le calendrier pour remplacer la précédente ou notifierai le délai

Cela fonctionne mais elle se reprotège dès que je change de cellule entre Q et W ou effectué un entrée pour valider

Oui normal.

- Point 1 : allez dans le code de la feuille Provisio et modifiez cette ligne

If Target.Column = 21 And Target <> vbNullString Then

- Point 2 : ce que voulez c'est que si Q à U sont complétée le planning se met déjà à jour, puis se remet à jour i W est complété ? Waouh si c'est cela c'est presque revoir tout le process

Oui normal.

Pas pratique étant donné que je renseigne ces colonnes en suivant

Point 1 :
Je remplace : If Target.Column = 21 Then
Pour indiquer : If Target.column = 21 And Target <> vbNullString Then

Point 2 : Aïe Ha oui quand même

Pas pratique étant donné que je renseigne ces colonnes en suivant

Exact aussi. Alors il faut bouger les protect et unprotect actuels dans le code Planning mais comme ces codes sont aussi exécutés depuis l'usf... , il va falloir revoir le positionnement des protections
Par exemple ne mettre la protection que si les colonnes Q à W sont toutes remplies ou alors protéger chaque cellule entre Q et W une fois remplie (c'est juste une idée mais à analyser...)

Il faut que systématiquement, le fichier soit protégé à l'ouverture de celui-ci (ça doit être déjà le cas)
Il doit se déprotège et reprotège automatiquement et à chaque fois qu'une personne rentre une ligne ou la modifie (ça doit également être le cas)

De mon côté, je souhaiterai seulement déprotéger la feuille par l'intermédiaire de mon code et une fois l'action de fermeture du fichier (ou enregistré) celui-ci reprotège automatiquement la feuille ou même mieux, protéger l'ensemble du fichier !
Je n'est pas le besoin que la protection s'effectue en auto dans les conditions des colonnes Q à W.

Je pense que cela doit vous simplifier les choses.

Pour info : J'ai échangé avec notre service informatique pour le partage du fichier. Ils m'ont déconseillé car ont déjà eu des soucis par le passé.
Ils ont créé un dossier de partage en lecture et écrire à des certains utilisateurs.
Si une de ces personnes souhaite ouvrir le fichier et que celui-ci est déjà utilisé, il sera possible de l'ouvrir mais uniquement en lecture seul (le classique).

De mon côté, je souhaiterai seulement déprotéger la feuille par l'intermédiaire de mon code et une fois l'action de fermeture du fichier (ou enregistré) celui-ci reprotège automatiquement la feuille ou même mieux, protéger l'ensemble du fichier !
Je n'est pas le besoin que la protection s'effectue en auto dans les conditions des colonnes Q à W.

Lorsque vous écrivez votre code, de quel code parlez-vous ? le code mise à jour ?
Si oui, je dois regarder mais une idée serait que le bouton de Mise à jour vous demande un mot de passe et que seul ce bouton pourrait remettre le planning à jour et vous donner accès aux cellules Q à W
Cela voudrait aussi dire qu'en cas d'ajout par l'utilisateur le planning ne serait pas actualisé


Merci pour votre info. Je vous en avais parlé précédemment et le mieux est que votre service informatique vous propose quelque chose.
J'avais eu ce souci aussi et je l'avais résolu en utilisant le nom d'utilisateur dans des codes. L'utilisateur avait accès total ou en lecture seulement

C'est le code pour ôter la protection de la feuille dont je parle

Je pense qu'il faut simplifier les choses comme je vous l'ai décris précédemment.
Le fichier fonctionne déjà très bien comme cela, c'est juste le problème de retaper systématiquement le code de déprotection de la feuille à chaque changement de cellule (de Q à W) qui est contraignant.
Pour moi, taper une fois le code pour déprotéger et que le fichier se reprotège automatiquement à sa fermeture est suffisant.

PRIORITE

Peut-on remédier à un petit souci avant, svp ?
Il arrive parfois que lorsque nous voulons rentrer une nouvelle ligne (il demande le code pour déprotéger la feuille)
Savez-vous où cela peut bloquer ?

Voici ce que je peux vous proposer après analyse
- A l'ouverture le fichier est toujours protégé (par la fermeture précédente)
- lorsque les utilisateurs entrent une nouvelle ligne, le planning n'est jamais mis à jour. Seul vous pouvez le faire en cliquant sur le bouton Mise à jour
- lorsque vous cliquez la première fois (donc un seule fois) sur le bouton Mise à jour :
-- le code vous demande le mot de passe
-- si le mot de passe est bon, le code met à jour le planning
-- ensuite vous pouvez modifier les colonnes A à W comme vous voulez et recliquer sur le bouton Mise à jour à chaque fois (là le code ne vous demande plus le mot de passe.
-- une fois que vous ou un utilisateur referme le fichier, le code reprotège automatiquement la feuille

Peut-on remédier à un petit souci avant, svp ?
Il arrive parfois que lorsque nous voulons rentrer une nouvelle ligne (il demande le code pour déprotéger la feuille)
Savez-vous où cela peut bloquer ?

Il faudrait comprendre ce que vous avez fait à ce moment là. Mais je pense que la solution ci-dessus devrait résoudre le souci

De mon côté, ça me va.
Si en plus cela vous simplifie le travail de votre côté, nous sommes gagnant.
J'attends avec impatience votre proposition.
Merci encore pour votre aide

A. Allez dans THISWORBOOK et mettez ce code

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Feuil1.Protect adm
End Sub

B. Allez dans le module 2

-- ajoutez cette ligne au dessus des codes (là où vous avez Option explicit, etc...)

Public i As Byte

--- ajoutez ce code en dessous des deux codes présents (planning et maj)

Sub acceder()
Dim Message As String, Title As String
Dim mdp

If Feuil1.ProtectContents = True Then
    Message = "Saisissez le mot de passe"
    Title = "Mot de passe"

    If i > 3 Then MsgBox "3 tentatives max ": Exit Sub
    mdp = Application.InputBox(Message, Title)
    If mdp = 0 Then
        MsgBox "Vous avez annulé", vbInformation, "Annulation": Exit Sub
    ElseIf mdp = "" Then
        MsgBox "Vous n'avez rien saisi", vbInformation, "Annulation": Call acceder
    ElseIf mdp = adm Then
        MsgBox "Accès accordé", vbInformation, "Autorisation"
        Feuil1.Unprotect adm
        Call planning
    ElseIf mdp <> adm And mdp <> "" Then
        MsgBox "Mauvais mot de passe", vbCritical, "Erreur mot de passe": i = i + 1: Call acceder
    End If
End If
'i = 0
End Sub

-- Allez dans le code Planning, et désactivez toutes les lignes Unprotect et Protect
-- Modifiez le code associé au bouton "Mise à jour" afin de l'attribuer à la Sub Acceder()

C. Allez dans l'USF, code Private Sub CommandButton1_Click() et désactivez la ligne CALL PLANNING (elle se trouve juste après CALL TRIER)

Fermer votre fichier et faites un test

Remarque importante : une chose que ne vous ai pas dites. Ne dupliquez jamais votre feuille "provisio". Si vous changez d'année par exemple, c'est toujours cette feuille que vous devez utiliser. Donc ce que vous devez faire en cas d'archive c'est dupliquer la feuille et renommer la feuille dupliquée.
En gros votre feuille de travail est toujours l'actuelle. A votre place, j'éviterais d'ajouter 2024 dans le nom de la feuille pour éviter tout problème

A :
Qu'est ce que THISWORBOOK ?

B:
2 premiers points : Fait !
Quand vous dites, désactiver, cela signifie supprimer ?

-- Modifiez le code associé au bouton "Mise à jour" afin de l'attribuer à la Sub Acceder()

Je ne ne comprends pas ce que je dois effectuer là

A : Qu'est ce que THISWORBOOK ?

presse papier02

B: 2 premiers points : Fait !

J'ai modifié la ligne Msgbox..."accès accordé" dans mon post précédent.

Quand vous dites, désactiver, cela signifie supprimer ?

Soit vous supprimez ou vous mettez une apostrophe devant la ligne (elle sera mise en vert et donc désactivée)

Je ne ne comprends pas ce que je dois effectuer là

- Faites un click droite, sur le bouton Mise à jour
- Choisir "Accéder à une macro"
- dans la fenêtre, rubrique "nom de la macro", tapez --> acceder

Une fois fait, cliquez sur le bouton Mise à jour, le code vous demandera une seule fois le mot de passe.

NB :
- Il faudra que vous alliez recocher la case verrouillage des colonnes Q à W afin que l'utilisateur ne puisse pas avoir accès. vérifiez ce point là que vous aviez modifié hier
- Le code "acceder" vous permet 3 tentatives d'accès par mot de passe. On pourrait aussi faire en sorte que le fichier se ferme automatiquement après la 3ieme tentative. A voir si intérêt


EDIT : j'ai une petite erreur dans le code acceder, il faut supprimer la ligne --> i =0

J'ai effectuer toutes vos étapes de votre dernier post.

- Faites un click droite, sur le bouton Mise à jour

- Choisir "Accéder à une macro"

- dans la fenêtre, rubrique "nom de la macro", tapez --> acceder

Sur le clic doit, je n'est pas "accéder à la macro" mais "affecté une macro" et voilà le choix :
Malheureusement, nous les avions renommé de cette façon ?

capture

Je vous ai écrit de taper --> acceder dans la rubrique


edit : dans le module 3, ajoutez cette ligne en dessous d'option explicit --> Option Private Module

Désolé,
Fait
J'effectue les tests

1er essai,
Création d'une nouvelle ligne (côté utilisateur), la feuille est donc protégé.
Je rempli l'USF puis effectuer la validation pour insérer la ligne et là, il me demande le code pour déprotéger la feuille

capture

Je rempli l'USF puis effectuer la validation pour insérer la ligne et là, il me demande le code pour déprotéger la feuille

Au vu de la vue, vous n'avez pas suivi tout le point 2 que je vous ai donné ici --> https://forum.excel-pratique.com/s/goto/1180056 ...

Rechercher des sujets similaires à "insertion lignes tableau tenant compte semaines"