Verrouillage d'une ligne par un clic dans une cellule

Bonjour,

je souhaiterais verrouiller une ligne en cliquant sur la dernière cellule de cette ligne : conditions, si les cellules de cette lignes sont renseignées sinon pas de verrouillage!

j'ai déjà un macro qui exécute cette fonction mail cela ne fonctionne pas si certaines cellules sont fusionnées!

Mot de passe pour accès fichier : Utilisateur: ADMIN / MDP : ADMIN la feuille en question est la feuille "Appareillage"

Bonsoir,

je ne maitrise pas la fonction resize ...

je la remplace tout simplement par un range sur l'ensemble des cellules de la ligne et je compte le nombre de valeurs qui doit être égal à 6 et là ça marche

@ bientôt

LouReeD

Cool!! mais il y a un ptit souci! lorsque l'on verrouille, il affiche un boîte de dialogue avec un "6" et si l'on essaye de verrouiller une ligne pas complètement renseignée, il affiche une bialbox avec "o" avant le message "vous devez renseigner toutes les cellules de la ligne".

Un peu de travail pour vous

il vous suffit de supprimer la ligne : MSGBOX etc...

Vous auriez pu la trouver celle la non ?

@ bientôt

LouReeD

Oui en effet!!! c'est ok maintenant.

autre question, j'aimerais que l'identifiant saisi lors de l'ouverture du classeur s'affiche automatiquement dans la colonne "Opérateur" de la feuille Appareillage. si c'est pas trop demandé!! lol

Bonjour,

ce n'est pas trop demandé, il faut juste que je ou que quelqu'un regarde

Là je suis "sous la vague"...

@ bientôt

LouReeD

Bonsoir,

voilà après une petite retouche le principe est le suivant :

dans la procédure de test de validité Utilisateur-MDP s'il est positif on lance une boucle indéfinie sur la colonne B de la feuille paramétrage, si elle est pleine alors on copie en colonne M (13) le nom de l'utilisateur.

Si la cellule est vide, on arrête la boucle.

Petite nouveauté, l'application est rendu invisible tant que le mot de passe n'est pas bon, mais sans aller jusque là, vous pourriez ne laisser que les instruction Application.ScreenUpDating = false ou true afin d'éviter le scintillement d'Excel lors du cache et de l'affichage des feuilles.

Une autre idée est de cacher les feuilles avant la fermeture, plutôt que de la faire à l'ouverture.

Après l'idée extrême trouvée sur le net :

lors de la fermeture du classeur, vous cachez toutes les feuilles, sauf une qui comporte un texte demandant d'activer les macros, comme cela si les macros ne sont pas activées, seule la feuille indiquant de les mettre en marche s'affiche. Si les macro sont activées, alors dans le module d'ouverture vous faite deux actions : la première celle de cacher la feuille qui demande d'activer les macros, puis afficher le userform de demande de mot de passe (avec ou sans le code de masquage d'application).

Donc double protection, si en plus vous verrouillez le code VBA...

@ bientôt

LouReeD

Bonjour à tous,

je suis très intéressé par cette discussion car elle correspond à mes besoins mais je n'y arrive pas dans mon fichier. Je souhaiterai, à la manière de POM29, pouvoir verrouiller/déverrouiller chaque ligne en fonction du statut de la colonne R (verrouiller ou déverrouiller).

Comment dois je procéder ? Je ne maîtrise pas les macros.

De plus, je souhaiterai faire de mon fichier, un fichier partagé, pouvant être ouvert par plusieurs personnes à la fois. Comment le paramétrer ainsi ? Est ce fiable ?

D'avance merci pour votre aide.

Francoisrr

Bonsoir,

le fichier joint répond à la première question.

Pour la deuxième question, il faut dans le ruban aller dans l'onglet "Révision".

Puis sur le milieu droit, cliquez sur "Partager le classeur".

Pour ce qui est de la fiabilité, ça marche bien, mais si des erreurs de manipulation sont faites elles le seront pour tout le monde.

Et ce système interdit l'utilisation des Tableaux Excel (anciennement nommée "liste" dans Excel 2003 et moins)

@ bientôt

LouReeD

Bonsoir LouReeD,

Merci beaucoup. Cela me va très bien cependant, 1) j'ai besoin de réaliser cela sur un fichier comprenant des données commerciales réelles (que j'avais enlevées du fichier joint). Comment faire pour l'importer dans mon fichier commercial ?

2) De plus, j'aurai besoin de mettre "déverrouiller" sur toutes les lignes par défaut afin de pouvoir les compléter ou cela peut se faire automatiquement ?

3) Est il possible de verrouiller sans code mais de déverrouiller chaque ligne avec un code ?

Enfin, au sujet de fichier partagé, aurais tu des recommandations quant aux paramétrages ? Globalement, plusieurs personnes vont travailler sur le même fichier mais ne devrait pas travailler sur les mêmes lignes (certains créent des nouvelles lignes en bas et d'autres modifient les lignes au dessus).

D'avance merci pour ton aide, c'est génial !

Bonjour,

pour l'intégrer dans votre fichier :

Clic droit sur le nom de l'onglet où se trouve le tableau.

Sélectionner dans le menu contextuel qui apparaît "Afficher le code".

Copier coller ce qui suit :

Private Sub Worksheet_Change(ByVal Target As Range)
' fonction événementielle qui détecte une modification de valeur dans une cellule
' cette cellule est "représentée" par Target

    ' on test si cette modification a eu lieu en colonne R
    If Not Intersect(Target, Range("R:R")) Is Nothing Then
        ' on est bien en colonne R, on commence par déverrouiller la feuille
        ActiveSheet.Unprotect
        ' si c'est le cas on vérifie la valeur de cette cellule
        If Target.Value = "verrouiller" Then
            ' si c'est égal à "verrouiller" alors on met la propriété Locked de la ligne choisie (Target.Row) à True (vrai)
            ' ce qui aura pour effet de verrouiller ces cellule lorsque la protection de la feuille sera remise
            Range(Cells(Target.Row, 1), Cells(Target.Row, 17)).Locked = True
        Else
            ' sinon on met cette propriété à Faux
            Range(Cells(Target.Row, 1), Cells(Target.Row, 17)).Locked = False
        End If
        ' on remet la protection de la feuille pour que les modifications faites soient "actives"
        ActiveSheet.Protect
    End If
End Sub

Voilà il vous reste plus qu'à "sauvegarder sous" afin de choisir l'extension de fichier .xlsM qui correspond au format d'un fichier Excel qui contient des Macros. Si vous sélectionnez .xlsX alors les Macros seront supprimées du fichier et il ne sera plus fonctionnel comme vous le souhaitez.

2) il vous faut alors sélectionner toutes les cellules de la page, puis clic droit, dans le menu sélectionnez "Format de cellule", puis dans la fenêtre qui s'ouvre l'onglet protection et décochez la ligne Verrouillée.

Voilà par défaut les cellules de la feuille ne sont pas verrouillée, mais en mettant la case à verrouiller cela les verrouillera !

Pour le 3) c'est faisable, mais là je manque de temps...

Donc @ très bientôt

LouReeD

Bonjour,

Ci-joint le fichier...

sur la colonne R un simple copier/coller de valeur "déverrouiller" permet d'avoir ce que vous demandiez, ceci dit déverrouiller ou rien c'est traiter de la même manière à savoir : ce n'est pas verrouiller.

Ensuite la mise en place du mot de passe pour le déverrouillage. Attention ! aucune protection ! un simple Alt+F11 permet de connaître le mot de passe, mais ceci diminue les mauvaise manipulations.

@ bientôt

LouReeD

Rechercher des sujets similaires à "verrouillage ligne clic"