VBA Excel

vba procedure

Bonjour à tous, je suis en train de m'arracher les cheveux. C'est pourquoi je sollicite votre aide SVP.

La procédure ci-dessus fonctionne si la feuille "Encoder" est protégée, ainsi que sur les cellules de la feuille "versements" qui ne sont pas protégées.

Par contre si je l'utilise sur des cellules protégées de la feuille "versements", ça ne fonctionne pas ?!. (C'est à dire la feuil "Encoder" fonctionne et la feuil "versements" ne fonctionne pas).

Il y a une fenêtre qui s'affiche avec ce message: Erreur d'exécution '1004': La cellule que vous essayez de modifier se trouve sur une feuille protégée.

Je vous remercie par avance pour votre aide.

Bonsoir,

Il est fort probable que lors de l'exécution de ton code, tu rentres dans une autre procédure où tu actives la protection de la feuille "versements". Par exemple, si tu as programmé une procédure associée à l'événement "Worksheet_selectionchange", tu exécutes forcément cette dernière.

Une exécution pas à pas te renseignera.

Merci pour ta réponse, ce soir je suis fatigué et saturé. Je vais essayer demain matin et je te tiendrais au courant.

Cordialement Yannec

Bonjour, je reviens vers Thev pour lui dire que le code a été programmé par un autre,(je n'arrive plus à le joindre) moi j'en suis incapable.

Donc j'ai essayé l'exécution du pas à pas détaillé, il ne démarre pas. Que faire pour que dans la feuille "versements" la protection reste désactivé, jusqu'à la fin de la procédure ?.

Moi je veux simplement protéger les 2 feuilles concernées d'une manière ou d'une autre. J'ai pensé à poser ou insérer sur la feuille comme une épaisse de vitre. Je n'ai pas réussie. Est-ce que c'est possible ?!.

Je compte sur toi pour trouver une solution @++

Salut Yannec,

sans fichier, ça risque d'être long!

Mais, s'agissant d'un WorkSheets_Change, essaie en mettant en début de procédure : Application.EnableEvents=False et son pendant True en fin, bien sûr.

On a parfois des vilaines surprises sans cela!

A+

Salut, content de te lire . J'ai essayé mais ça ne fonctionne pas. Ci-joint mon fichier avec une base de données farfelue.

@++

Pour ouvrir VBA de feuille encoder le mot de passe est: epargne

Comment ça se fait que le fichier n'est pas encore téléchargé

Salut Yannec,

le code que tu nous montres dans ton premier post n'a rien à voir avec celui de ton programme!

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "epargne"
If Target.Count <> 1 Then Exit Sub

... où la feuille Versements n'est pas déprotégée!

Essaie déjà en corrigeant cela! Pour le reste, ne sachant pas comment fonctionne ton encodage, je n'ai pas pu tester valablement.

A+

Bonjour Curilis, justement c'est ça le problème. La feuille active protégée fonctionne, tandis que la feuille "versements" ne fonctionne pas.

PS: Si "Encoder" est protégée et que "versement" n'est pas protégée, le programme fonctionne très bien.

Je suis aussi de la Moselle @+

Yannec,

je sens qu'on va tourner en rond...

Essaie ceci dans ta procédure. Ne sachant pas comment fonctionne ton encodage (encore une fois), je ne peux tester valablement.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
'
ActiveSheet.Unprotect "epargne"
ActiveSheet.Unprotect "encoder"
ActiveSheet.Unprotect "versements"
'
If Target.Count <> 1 Then Exit Sub
...
...
...
  If Not lignech Is Nothing Then
    If Target.Value <> "" Then Sheets("Versements").Cells(lignech.Row, col) = Target.Value
  End If
End If
ActiveSheet.Protect "epargne"
ActiveSheet.Protect "encoder"
ActiveSheet.Protect "versements"
'
Application.EnableEvents = True
'
End Sub

A+

Bonjour à tous, le programme fonctionne comme suis: - saisir dans la cellule "C1" de la feuille "Encoder" le N° du casier et valider -

puis la somme et valider.

La somme s'affiche dans le N° du casier de la feuille "Encoder" et face au numéro du casier dans la feuille "versements" et dans la colonne du mois correspondant. J'espère avoir été assez explicite.

@++

Bonjour à tous, mon programme (Levée mensuel Club d'Epargne) fonctionne comme suit:

  • Saisir le N° du casier dans la feuil "Encoder" cellule" C1" puis valider.
  • Saisir la somme dans la même cellule et valider.
Résultat: la somme s'inscrit dans le casier correspondant de la feuil "encoder". Ainsi que dans la feuil "versement" du N° de casier

correspondant et dans la colonne du mois courant.

J'espère avoir été assez explicite, et je vous souhaite un bon après-midi

PS.: il me semble que j'ai déjà envoyé ce message ?, à moins que j'ai oublié d'appuyer sur envoyer

Bonsoir,

Je reprends ton problème qui me parait relativement simple. Il suffit d'insérer d'encadrer l'instruction qui coince par une déprotection de la feuille versements, puis une reprotection.

ci_jointe version corrigée

Bonsoir, ça marche et je suis super content. Pour toi c'est évident, mais pas pour moi. Maintenant que tu m'as montré la solution, ça paraît tellement logique ?!.

En tous cas je te remercie beaucoup, tu m'as bien rendu service. Je te souhaite de bonne fêtes de fin d'année, ainsi qu'à ta famille.

Rechercher des sujets similaires à "vba"