macro avec Target qui fonctionne très bien sauf si je protège la feuille

domduf33

XLDnaute Nouveau
Bonsoir le forum.

j'ai un petit soucis avec la fonction target.

La macro si-dessous me permet deux choses :
La première partie vérifie le contenu des cellules de B30 à B70 et si le contenu de l'une d'entre-elles vient à être supprimé alors cela supprime, sur la même ligne, le contenu des cellules des colonnes 3 et 4.

La deuxième partie de cette macro affiche dans 5 cellules spécifiques (tous le temps les mêmes), le contenu de 5 cellules différentes selon la ligne sur laquelle se situe la cellule active du fichier excel.

Cette macro fonctionne très bien, sauf si je protège la feuille où à ce moment là j'ai une erreur de type 1004 à partir de la ligne 2 de la deuxième partie (j'y ai collé un smileys "mad'").

J'ai cherché une explication sur le net mais je n'en trouve pas alors, je me tourne de nouveau vers vous.

Si quelqu'un à une idée ?
par avance merci
Cordialement
Dominique

Voici la macro

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' suppression des ledgers si nominal supprimé
ligned = 30
lignef = 70
For ligned = 30 To lignef
If IsEmpty(Cells(ligned, 2)) Then Range(Cells(ligned, 2), Cells(ligned, 4)).ClearContents
Next ligned

'inscription des ledgers et des libellé dans les champs
Nominal = 21
:mad:If Target.Row > 29 Then Cells(27, 2) = Target.Offset(, Nominal - Target.Column)
ledger1 = 24
If Target.Row > 29 Then Cells(26, 3) = Target.Offset(, ledger1 - Target.Column)
Nomledger1 = 26
If Target.Row > 29 Then Cells(27, 3) = Target.Offset(, Nomledger1 - Target.Column)
Ledger2 = 25
If Target.Row > 29 Then Cells(26, 4) = Target.Offset(, Ledger2 - Target.Column)
Nomledger2 = 27
If Target.Row > 29 Then Cells(27, 4) = Target.Offset(, Nomledger2 - Target.Column)


End Sub
 

Softmama

XLDnaute Accro
Re : macro avec Target qui fonctionne très bien sauf si je protège la feuille

Bonjour,

Tu as donnée l'explication tout seul : ta feuille est protégée... Du coup, cela interdit de modifier les objets et les cellules verrouillées, que cela soit par un utilisateur ou une macro.

Pour régler ton problème, 2 solutions. Ou tu déverrouilles les cellules incriminées, mais cela permettra également à un utilisateur de les modifier manuellement. Ou tu déprotèges ta feuille par macro le temps de la modification.

Pour la 2ème solution, tu peux rajouter ces 2 lignes en rouge dans ton code (en supposant que le mot de passe est Toto) :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[COLOR="Red"]Activesheet.Unprotect "Toto"[/COLOR]
' suppression des ledgers si nominal supprimé
ligned = 30
lignef = 70
For ligned = 30 To lignef
If IsEmpty(Cells(ligned, 2)) Then Range(Cells(ligned, 2), Cells(ligned, 4)).ClearContents
Next ligned

'inscription des ledgers et des libellé dans les champs
Nominal = 21
If Target.Row > 29 Then Cells(27, 2) = Target.Offset(, Nominal - Target.Column)
ledger1 = 24
If Target.Row > 29 Then Cells(26, 3) = Target.Offset(, ledger1 - Target.Column)
Nomledger1 = 26
If Target.Row > 29 Then Cells(27, 3) = Target.Offset(, Nomledger1 - Target.Column)
Ledger2 = 25
If Target.Row > 29 Then Cells(26, 4) = Target.Offset(, Ledger2 - Target.Column)
Nomledger2 = 27
If Target.Row > 29 Then Cells(27, 4) = Target.Offset(, Nomledger2 - Target.Column)

[COLOR="Red"]Activesheet.Protect "Toto"
[/COLOR]End Sub
 

domduf33

XLDnaute Nouveau
Re : macro avec Target qui fonctionne très bien sauf si je protège la feuille

Bonsoir le forum.

Merci pour vos réponses.
Je vais donc demain me pencher sur le problème du verrouillage et déverrouillage de la feuille.

merci à vous et bonsoir
Cordialement
Dominique
 

ROGER2327

XLDnaute Barbatruc
Re : macro avec Target qui fonctionne très bien sauf si je protège la feuille

Bonsoir à tous
On peut aussi s'intéresser à cet argument de la méthode Protect :
UserInterfaceOnly Argument de type Variant facultatif. Cet argument a la valeur True pour protéger l'interface utilisateur, mais pas les macros. Si cet argument n'est pas spécifié, la protection s'applique à la fois aux macros et à l'interface utilisateur.
(Extrait de l'aide généreusement fournie par B.G.)
ROGER2327
#4522


Lundi 9 As 138 (Equarrissage pour tous, V)
21 Brumaire An CCXIX
2010-W45-4T23:44:48Z
 

Discussions similaires

Réponses
4
Affichages
810

Statistiques des forums

Discussions
312 231
Messages
2 086 449
Membres
103 213
dernier inscrit
Poupoule