vba - ne pas pourvoir effacer de saisie

Le
j-pascal
Bonsoir,

Est-il possible que dès lors qu'une cellule est saisie (parmis d'autres
cellules d'une même ligne) qu'il soit impossible de supprimer les
valeurs de la ligne ?

Je suis en train de faire un registre de courrier "départ / arrivée"
partagé et je ne souhaite pas qu'un utilisateur puisse effacer ou
corriger les données saisies par autrui

Merci pour votre aide,

JP

PS : je précise que le classeur ouvert accepte forcément les macros
(sinon les feuilles de saisies sont veryhidden)
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fredo P.
Le #17929461
Oui c'est possible
1)sélectionner les cellules à saisir>clic droit>format de
cellule>protection>décocher "verrouillée"> menu Outils>Protection>Protéger
la feuille>OK.
2)Dans le code la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect
End Sub


"j-pascal" news:
Bonsoir,

Est-il possible que dès lors qu'une cellule est saisie (parmis d'autres
cellules d'une même ligne) qu'il soit impossible de supprimer les
valeurs de la ligne ?

Je suis en train de faire un registre de courrier "départ / arrivée"
partagé et je ne souhaite pas qu'un utilisateur puisse effacer ou
corriger les données saisies par autrui ...

Merci pour votre aide,

JP

PS : je précise que le classeur ouvert accepte forcément les macros
(sinon les feuilles de saisies sont veryhidden...)




Fredo P.
Le #17934291
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg#
ActiveSheet.Unprotect
Lg = Target.Row
If IsDate(Range("H" & Lg)) Then
Range(Lg & ":" & Lg).Locked = True
Range("U" & Lg & "," & "V" & Lg & "," & "W" & Lg).Locked = False
End If
ActiveSheet.Protect
End Sub

"milloche" news:
Bonjour Fredo,
J'aurais, moi, besoin de sa petite soeur à ta macro.
Avec cette condition à la place de Target :
Si la cellule H de la ligne de Target est une date, alors verrouiller toute
la ligne et protèger la feuille.
Pour "est une date", je n'ai trouvé pour l'instant que >36000.
Merci
"Fredo P." %
Oui c'est possible
1)sélectionner les cellules à saisir>clic droit>format de
cellule>protection>décocher "verrouillée"> menu Outils>Protection>Protéger
la feuille>OK.
2)Dans le code la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect
End Sub


"j-pascal" news:
Bonsoir,

Est-il possible que dès lors qu'une cellule est saisie (parmis d'autres
cellules d'une même ligne) qu'il soit impossible de supprimer les
valeurs de la ligne ?

Je suis en train de faire un registre de courrier "départ / arrivée"
partagé et je ne souhaite pas qu'un utilisateur puisse effacer ou
corriger les données saisies par autrui ...

Merci pour votre aide,

JP

PS : je précise que le classeur ouvert accepte forcément les macros
(sinon les feuilles de saisies sont veryhidden...)




Fredo P.
Le #17934281
Range("U" & Lg & "," & "V" & Lg & "," & "W" & Lg).Locked = False
peut être remplacée par
Range("U" & Lg & ":" & "W" & Lg).Locked = False


"milloche" news:
Bonjour Fredo,
J'aurais, moi, besoin de sa petite soeur à ta macro.
Avec cette condition à la place de Target :
Si la cellule H de la ligne de Target est une date, alors verrouiller toute
la ligne et protèger la feuille.
Pour "est une date", je n'ai trouvé pour l'instant que >36000.
Merci
"Fredo P." %
Oui c'est possible
1)sélectionner les cellules à saisir>clic droit>format de
cellule>protection>décocher "verrouillée"> menu Outils>Protection>Protéger
la feuille>OK.
2)Dans le code la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect
End Sub


"j-pascal" news:
Bonsoir,

Est-il possible que dès lors qu'une cellule est saisie (parmis d'autres
cellules d'une même ligne) qu'il soit impossible de supprimer les
valeurs de la ligne ?

Je suis en train de faire un registre de courrier "départ / arrivée"
partagé et je ne souhaite pas qu'un utilisateur puisse effacer ou
corriger les données saisies par autrui ...

Merci pour votre aide,

JP

PS : je précise que le classeur ouvert accepte forcément les macros
(sinon les feuilles de saisies sont veryhidden...)




Fredo P.
Le #17937211
Si si , il suffit d'essayer de la démarrer à partir de l'éditeur vba en
cliquant un fois sur "Exécuter Sub/Userform" puis de modifier la cellule
adéquat.
"milloche" news:
OK
Merci
Petite question : pas possible de faire du pas à pas (F8) avec ce genre de
macro évènementielle ?
"Fredo P." etq09$
Range("U" & Lg & "," & "V" & Lg & "," & "W" & Lg).Locked = False
peut être remplacée par
Range("U" & Lg & ":" & "W" & Lg).Locked = False


"milloche" news:
Bonjour Fredo,
J'aurais, moi, besoin de sa petite soeur à ta macro.
Avec cette condition à la place de Target :
Si la cellule H de la ligne de Target est une date, alors verrouiller toute
la ligne et protèger la feuille.
Pour "est une date", je n'ai trouvé pour l'instant que >36000.
Merci
"Fredo P." %
Oui c'est possible
1)sélectionner les cellules à saisir>clic droit>format de
cellule>protection>décocher "verrouillée"> menu Outils>Protection>Protéger
la feuille>OK.
2)Dans le code la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect
End Sub


"j-pascal" news:
Bonsoir,

Est-il possible que dès lors qu'une cellule est saisie (parmis d'autres
cellules d'une même ligne) qu'il soit impossible de supprimer les
valeurs de la ligne ?

Je suis en train de faire un registre de courrier "départ / arrivée"
partagé et je ne souhaite pas qu'un utilisateur puisse effacer ou
corriger les données saisies par autrui ...

Merci pour votre aide,

JP

PS : je précise que le classeur ouvert accepte forcément les macros
(sinon les feuilles de saisies sont veryhidden...)




Fredo P.
Le #17937201
Juste un pti conseil sur OE, change ton format en texte brut cela prendra
moin de place sur ton PC.
j-pascal
Le #17939151
Bonsoir,

Merci pour ta réponse.
Je voudrais ajouter le petit bout de code qui suit pour permettre la
suppression de la saisie. Je ne sais pas comment l'intégre à ton code
pour ne pas avoir à le lancer séparément !
(Par ailleurs, si le mot de passe est erroné avec des nombres ça
fonctionne, mais si on met des lettres ça bugue !)

@+ ?

'---- (ton code)
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect
End Sub
'----

Sub Suppr()
Dim MdP As Variant

MdP = InputBox("Entrez le MdP pour supprimer cette saisie") +
vbExclamation

If MdP <> 0 Then
MsgBox "MdP erroné !"
Exit Sub
Else
ActiveSheet.Unprotect

With ActiveCell
.ClearContents
.Locked = False
End With
End If
End Sub
'----


Oui c'est possible
1)sélectionner les cellules à saisir>clic droit>format de
cellule>protection>décocher "verrouillée"> menu Outils>Protection>Protéger
la feuille>OK.
2)Dans le code la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect
End Sub


"j-pascal" news:
Bonsoir,

Est-il possible que dès lors qu'une cellule est saisie (parmis d'autres
cellules d'une même ligne) qu'il soit impossible de supprimer les
valeurs de la ligne ?

Je suis en train de faire un registre de courrier "départ / arrivée"
partagé et je ne souhaite pas qu'un utilisateur puisse effacer ou
corriger les données saisies par autrui ...

Merci pour votre aide,

JP

PS : je précise que le classeur ouvert accepte forcément les macros
(sinon les feuilles de saisies sont veryhidden...)




Fredo P.
Le #17942061
"j-pascal" news:
Bonsoir,

Merci pour ta réponse.
Je voudrais ajouter le petit bout de code qui suit pour permettre la
suppression de la saisie. Je ne sais pas comment l'intégre à ton code
pour ne pas avoir à le lancer séparément !
(Par ailleurs, si le mot de passe est erroné avec des nombres ça
fonctionne, mais si on met des lettres ça bugue !)

@+ ?

'---- (ton code)
Private Sub Worksheet_Change(ByVal Target As Range)


if "Mot de passe"=inputbox("Entrer le mot de passe") Then
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect


else
msgbox" Mot de passe incorrect"
End Sub
'----

Sub Suppr()
Dim MdP As Variant

MdP = InputBox("Entrez le MdP pour supprimer cette saisie") +
vbExclamation

If MdP <> 0 Then
MsgBox "MdP erroné !"
Exit Sub
Else
ActiveSheet.Unprotect

With ActiveCell
.ClearContents
.Locked = False
End With
End If
End Sub
'----


> Oui c'est possible
> 1)sélectionner les cellules à saisir>clic droit>format de
> cellule>protection>décocher "verrouillée"> menu


Outils>Protection>Protéger
> la feuille>OK.
> 2)Dans le code la feuille
> Private Sub Worksheet_Change(ByVal Target As Range)
> ActiveSheet.Unprotect
> If Target <> "" Then
> Target.Locked = True
> End If
> ActiveSheet.Protect
> End Sub
>
>
> "j-pascal" > news:
>> Bonsoir,
>>
>> Est-il possible que dès lors qu'une cellule est saisie (parmis d'autres
>> cellules d'une même ligne) qu'il soit impossible de supprimer les
>> valeurs de la ligne ?
>>
>> Je suis en train de faire un registre de courrier "départ / arrivée"
>> partagé et je ne souhaite pas qu'un utilisateur puisse effacer ou
>> corriger les données saisies par autrui ...
>>
>> Merci pour votre aide,
>>
>> JP
>>
>> PS : je précise que le classeur ouvert accepte forcément les macros
>> (sinon les feuilles de saisies sont veryhidden...)




Fredo P.
Le #17942051
AAch! j'ai pas pu le rattraper en vol, parti trop vite
il manque un End If juste avant End Sub

"j-pascal" news:
Bonsoir,

Merci pour ta réponse.
Je voudrais ajouter le petit bout de code qui suit pour permettre la
suppression de la saisie. Je ne sais pas comment l'intégre à ton code
pour ne pas avoir à le lancer séparément !
(Par ailleurs, si le mot de passe est erroné avec des nombres ça
fonctionne, mais si on met des lettres ça bugue !)

@+ ?

'---- (ton code)
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect
End Sub
'----

Sub Suppr()
Dim MdP As Variant

MdP = InputBox("Entrez le MdP pour supprimer cette saisie") +
vbExclamation

If MdP <> 0 Then
MsgBox "MdP erroné !"
Exit Sub
Else
ActiveSheet.Unprotect

With ActiveCell
.ClearContents
.Locked = False
End With
End If
End Sub
'----


> Oui c'est possible
> 1)sélectionner les cellules à saisir>clic droit>format de
> cellule>protection>décocher "verrouillée"> menu


Outils>Protection>Protéger
> la feuille>OK.
> 2)Dans le code la feuille
> Private Sub Worksheet_Change(ByVal Target As Range)
> ActiveSheet.Unprotect
> If Target <> "" Then
> Target.Locked = True
> End If
> ActiveSheet.Protect
> End Sub
>
>
> "j-pascal" > news:
>> Bonsoir,
>>
>> Est-il possible que dès lors qu'une cellule est saisie (parmis d'autres
>> cellules d'une même ligne) qu'il soit impossible de supprimer les
>> valeurs de la ligne ?
>>
>> Je suis en train de faire un registre de courrier "départ / arrivée"
>> partagé et je ne souhaite pas qu'un utilisateur puisse effacer ou
>> corriger les données saisies par autrui ...
>>
>> Merci pour votre aide,
>>
>> JP
>>
>> PS : je précise que le classeur ouvert accepte forcément les macros
>> (sinon les feuilles de saisies sont veryhidden...)




Fredo P.
Le #17942321
Et pour avoir à ne répondre à la demande du Mdp qu'une seule fois, placer
un" Public MdP$ "en première ligne d'un module et en première ligne du code
de feuille: Option Compare Text pour ne pas faire de différence entre
caractères minuscules et majuscules.

Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
If "Mdp" <> MDp Then
MDp = InputBox("Entrez le Mot de passe")
End If
If "Mdp" = MDp Then
ActiveSheet.Unprotect
If Target <> "" Then
Target.Locked = True
End If
ActiveSheet.Protect
Else
MsgBox "Mot de passe incorrect"
End If
End Sub


ps: ce moyen de faire n'empèche pas d'effacer les données présentes dans les
cellules, pour cela il serait sans doute préférable de la placer dans
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Publicité
Poster une réponse
Anonyme