VBA pour verrouiller des lignes après remplissage

Bonsoir à tous et à chacun,

Quel est le code VBA qui me permettrait sur une feuille protégée par mot de passe "YYY", de verrouiller une ligne ou une partie de la ligne (Exemple pour la ligne 5, verrouiller les cellules de A5 à L5 )

  • une fois que l'on a inscrit "validé" (par liste déroulante ) en A5
  • et après avoir eu un message informant que "Aucune modification ne sera possible une fois la ligne validée".

Je joins un fichier Excel d'expérimentation

Merci pour l'aide

Cordialement,

Patrick

Salut Patrick,

quelque chose comme ceci? Très simple! A tester!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Target.Column > 1 And LCase(Cells(Target.Row, 1)) Like "valid*" Then [B1].Select
If Target.Column = 1 Then
    If Target.Value = "" Then
        MsgBox "Aucune modification ne sera possible une fois la ligne validée!", vbInformation
    Else
        MsgBox "Ligne protégée! Annuler la clé autorisera les modifications!", vbCritical
    End If
End If
'
End Sub

A+

Merci Curulis57 de ta réponse quasi-immédiate !

J'ai recopié la VBA que tu me proposes. Excel dit :

worksheet

Je suis incapable de comprendre la question. Aurais-tu la possibilité de regarder s'il te plait à partir du cf. fichier joint ?

Merci de ton aide

Cordialement,

Patrick


Curulis57,

Je te prie de m'excuser, le fichier joint dans mon précédent message ne se déprotège pas (j'ai dû me tromper de mot de passe en protégeant).

Voici le bon fichier protégé par le mot de passe "YYY"

Cordialement,

Patrick

Je crois que je vais arriver à envoyer le bon fichier....

Normalement, celui-ci doit pouvoir

Bonjour Patrick, Bonjour Curulis57,

J'ai téléchargé ton fichier.

J'ai juste apportée une petite modif à la proposition de curulis57.

Vois si cela te convient.

Cordialement

Salut Patrick,

il y a des Gremlins là-dedans...

J'ai donc refait un nouveau fichier pour que tu puisses tester la macro.

A+

Merci à tous les deux, curulis57 et ddept88 d’avoir pris du temps pour m’aider. Je me permets de vous solliciter à nouveau car mes besoins se situent probablement entre vos deux solutions ….

La solution proposée par ddept88 fonctionne bien. Le fichier fonctionne lorsque la feuille est protégée. C’est parfait.

1) Cependant, dès que l’on a sélectionné « Valider », le message « Aucune modification ne sera possible une fois la ligne validée » apparait mais il n’est plus possible d’interrompre le processus pour modifier la ligne. Disons que le message apparaît trop tard puisqu’il n’est plus possible à ce stade de modifier la ligne alors que le message doit agir comme une alerte. Cela peut surprendre l’utilisateur

2) Dans cette solution, la validation n’est pas réversible (l’important pour moi étant qu’il n’y ait pas de modification intempestive ou d’effacement involontaire des cellules mais que l’utilisateur puisse s’il le veut, revenir sur l’écriture de la ligne.

La solution proposée par curulis57 fonctionne parfaitement et elle est réversible. Quand on clique sur les cellules de validation, le message « Aucune modification ne sera possible une fois la ligne validée » n’enclenche pas encore le verrouillage et il est donc toujours possible d’intervenir sur la ligne avant de valider. C’est parfait !

1) Toutefois, le fichier ne fonctionne pas si la feuille est protégée.

Merci encore de votre aide et du temps passé. Pouvez-vous m’aider à « combiner » vos solutions pour obtenir le « juste parfait »

Bien cordialement,

Patrick

Voici une nouvelle proposition.

Cordialement

Que dire ? C'est extra ! exactement comme je le souhaitais

Merci ddept88 pour l'aide que tu m'as apportée

Merci aussi, bien évidemment, à toi curulis57

D'autant plus que je ne serai pas en mesure de rendre la pareille.... enfin, du point de vue de l'utilisation d'Excel ! Mais sinon, je peux offrir avec plaisir un coup à boire, le gite aussi, si vous passez du côté de la Mayenne....

Bien cordialement à vous deux

Patrick

Bonjour ddept88 et curulis57

Re-pardon de refaire appel à vos compétences.

J’ai un souci avec mon fichier et je souhaiterais que vous m’aidiez dans la mesure de votre disponibilité.

J’ai transposé la VBA que ddept88 a écrit pour l’adapter à mon fichier et elle fonctionne parfaitement ! (à une petite chose près mais cela est dû à moi puisque j'ai ajouté une 2ème VBA. Sinon, la 1ère fonctionnait toute seule sans problème Cela est expliqué dans ma 3ème question )

J’ai expliqué le problème que je rencontre relativement exactement en en détail dans le courrier Word joint. Vous aurez le choix entre lire ce courrier puis de regarder le fichier Excel ensuite ou bien de faire fonctionner directement le fichier Excel car vous verrez rapidement où le problème se pose et de lire ensuite ma série de questions sur le courrier Word.

Merci de m’aider autant que vous le pourrez en vous priant de m’excuser de vous prendre encore du temps.

Cependant, il va de soi que mes questions n'ont surtout rien d'une urgence, d'autant que c'est le WE )

Bien cordialement

Patrick

1917-02-25.docx (22.52 Ko)

Bonjour,

Tu as mis un autre mot de passe que YYY sur ta feuille.

Difficile de te répondre car je ne peux faire fonctionner le code dans cette condition.

Cordialement

Bonjour ddep88,

J'avais soigneusement préparé mes questions .... mais, en ce qui concerne le mot de passe, le réflexe a pris le dessus....

Je te prie de m'excuser.

Voici le fichier Excel avec le mot de passe "YYY"

Au passage, il se trouve que ce fichier Excel est la copie partielle d'un autre et qu'ils sont liés sans qu'il y ait nécessité. Excel propose donc de mettre à jour la liaison et je ne sais pas comment il est possible de délier ces deux fichier. Cependant, cela ne semble pas gêner le fonctionnement.

Merci et bien cordialement,

Patrick

Bonjour,

Patrick75 a écrit :

J'avais soigneusement préparé mes questions .... mais, en ce qui concerne le mot de passe, le réflexe a pris le dessus....

Je te prie de m'excuser.

Pas grave ça arrive à tout le monde!

Sinon, comme tu as des colonnes masquées, j'ai modifié le mode de protection pour que la macro puisse agir sur ces colonnes.

Sinon il faut afficher les colonnes et les masquer après écriture. Les deux sont possibles. J'ai choisi la première solution.

Ensuite j'ai ajouté un test avec and target.row=10 Les deux conditions doivent être remplies pour que vba passe à la suite.

Tu pourrais simplifier un peu ton code mais il fonctionne comme ça aussi.

Si tu devais faire des modifications, il faudra adapter le code

Bonne continuation.

Cordialement

Merci beaucoup ddep88 du temps passé pour le codage (et de plus un dimanche ! ), codage qui fonctionne parfaitement.

Dépasser ce défaut de fonctionnement de ma VBA "bricolée" a entrainé un codage très différent quand même.... signe que la VBA n'est pas à la portée du premier venu fût-il motivé....

Merci encore

bien cordialement

Patrick

PS : j'imagine que le 88 de ddept88 renvoie au département des Vosges... Moi qui réside désormais dans le 53, difficile de te dire de passer boire un coup à la maison mais le cœur y est

ddept88,

J'ai bien le sentiment d'abuser mais, j'imagine que comme tout utilisateur d'Excel, j'aurais plaisir à ce que mon fichier fonctionne de manière optimale.

Je viens de me rendre compte qu'il y a un petit disfonctionnement qui peut entrainer un risque d'erreur de manipulation des données.

En effet,

lorsque je choisis "validé" , le message apparait "Aucune modification ne sera possible lorsque la ligne sera validée ! Voulez-vous continuer ? "

Si je réponds "non", les cellules ne sont pas verrouillées. C'est juste

Mais la cellule de validation reste néanmoins sur "validé" Cela est donc erroné puisque les cellules sur la ligne concernée sont toujours modifiables

Y'a-t-il un moyen pour que la cellule n'affiche plus "Validé" si je réponds non à la question du message ?

idem pour la cellule de validation des taux....

Merci

Patrick

Bonsoir,

A l'origine, on travaillait sur la colonne A. J'ai omis de changer la colonne.

Nous avions

Application.EnableEvents = False

Range("A" & Target.Row) = ""

Application.EnableEvents = True

Voilà, ca devrait fonctionner en changeant seulement le A en AP

Pour le reste tu as raison. 88 c'est les Vosges. Un peu loin pour l'apéro

Bonne continuation et au plaisir.

Cordialement

Merci ddept88

L'avantage, c'est que pas à pas je comprends à quoi sert chaque ligne de code.....

Dernière question..... je le promets devant tous....

Quand je valide une ligne ou plus exactement, lorsque je réponds "oui" au message..... les onglets du classeur (en bas à gauche) disparaissent.....

je dois retourner dans les "Options" "Options avancées" "Afficher les options pour ce classeur" et cocher à nouveau "Afficher les onglets de classeur" pour les faire réapparaitre...

Faut vraiment toucher à rien dans Excel car un battement d'aide de papillon sur la feuille et c'est la tempête dans le classeur !

Je te renvoie le fichier au cas où...

Vraiment désolé

Patrick

Bonjour,

C'est un peu de ma faute car j'ai fait un copier/coller du fichier sur lequel j'étais en train de travailler sans porter attention à cette ligne.

ActiveWindow.DisplayWorkbookTabs = True 'True affiche les onglets/False masque les onglets

Tu peux la supprimer si tu veux.

Bonne continuation.

Cordialement

dddetp88,

Désolé, je n'ai pas été averti de ton message et c'est en revenant ce soir sur le forum que je le vois. Et encore, d'une façon bizarre que j'expliquerai après...

Tout d'abord, j'ai effectivement supprimer cette ligne : (je l'ai supprimer quatre fois en fait)

"ActiveWindow.DisplayWorkbookTabs = True 'True affiche les onglets/False masque les onglets"

pour tenter quelque chose puisqu'en faisant des recherches, j'ai constaté que cette ligne avait pour effet de supprimer les onglets !

Bref, j'allais te l'écrire en te demandant quelle était la raison d'être de cette ligne dans le codage de mon fichier...

J'ai donc ré-ouvert la discussion et me suis servi du dernier message (le mien en l'occurrence), pour en écrire un nouveau.

Et lorsque la page dédiée à l'écriture de mon message s'est ouverte, j'ai vu ta réponse située en dessous !!!

Je ne comprends pas pourquoi ça marche comme ça

Merci beaucoup ddetp88

Bien cordialement

Patrick

ok, bonne suite.

Rechercher des sujets similaires à "vba verrouiller lignes remplissage"