XL 2019 Duppliquer formule VBA (afficher la date automatique lors d'une saisie) + Problème VBA cellules protégées

ugo13

XLDnaute Nouveau
Bonjour à tous,

Je réalise un fichier pour le suivi de mes commandes (voir fichier joint, tout se passe dans l'onglet "SUIVI"), je rencontre deux problèmes que je n'arrive pas à résoudre, mes conaissances sur VBA sont très limités, je n'ai pas réussi à solutionner mon problème via le forum. Je suppose que ma problématique est simple pour quelqu'un d'aggueri.

1 - Duppliquer formule VBA qui fonctionne : Le but est d'éviter à l'opérateur de saisir la date du jour

J'ai copié un code me permettant d'avoir la date du jour en colonne C dès qu'il y a eu saisie dans la colonne E (cette date ne se met pas automatiquement à jour), cela fonctionne et me convient.

-Je souhaiterais duppliquer le code pour que la date du jour de saisi s'affiche également dans la colonne P dès qu'il y a une saisie dans la colonne R.
-Je souhaiterais que l'opération se fasse également de la même façon en colonne W en fonction d'une saisie dans la colonne X.


2- PB pour appliquer le code lors du vérouillage des cellules du tableau pour protéger la feuille

Avec mon premier code qui fonctionne comme expliqué ci-dessus, lorsque je dévérouille les cellules du tableau de ma colonne E, le code fonctionne. C'est la première étape qui me permet de d'effectuer une saisie dans ma colonne E

Dès lors que protège la feuille, lorsque je saisis un élément dans ma colonne E, le code ne fonctionne plus dans la colonne C (protégée et non modifiable)

Dès lors que je protège la feuille je souhaiterais que:

-Je souhaiterais faire fonctionner les codes lorsque les colonnes de mon tableau qui sont colorées en bleues sont verouillées ( ce sont les cellules ou j'ai des formules,
je ne souhaite pas qu'on puisse modifier ces données)

- Les autres colonnes colorées (en jaunes et roses er rouges) sont dévérouillées, ce sont les seules colonnes autorisées à être modifiées par les utilisateurs.


J'espère avoir été clair dans ma requête, je vous remercie par avance pour votre aide précieuse.
Ugo

PS: Mon fichier fait 4,86 MO, impossible de le joindre, une astuce?
 
Solution
La feuille est toujours protégée
ActiveSheet.Unprotect
suivi du mot de passe entre parenthèse
enlève la protection le temps de faire la macro...

ActiveSheet.protect suivi du mot de passe entre parenthèse
remet la protection en fin de macro
Donc ta feuille est protégée...
A+ François

fanfan38

XLDnaute Barbatruc
Bonjour
Si j'ai tout compris...
macro à mettre dans la feuille (clic droit sur le nom de la feuille et visualiser le code)
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect '(motdepass)
Select Case Target.Column
   Case Is = 5
     Range("C" & Target.Row) = Date
   Case Is = 18
     Range("P" & Target.Row) = Date
   Case Is = 24
     Range("W" & Target.Row) = Date
End Select
ActiveSheet.protect(mdp)
End Sub

A+ François
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, ugo13, fanfan38 (re)

Je sais pas si j'ai tout compris, mais juste pour le fun ;)
[confinement oblige]
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
ActiveSheet.Unprotect '(motdepass)
On Error Resume Next
Cells(T.Row, Choose(InStr(1, "ERX", Left(T.Address(0, 0), 1), 0), 3, 16, 23)) = Date
ActiveSheet.Unprotect
End Sub
 

Staple1600

XLDnaute Barbatruc
Re,

•>ugo13
Alors le noviciat est toujours une joie si tu as la vocation chevillée dans tes Cellules ;)
Voici de quoi éprouver ta foi en VBA ;)
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
ActiveSheet.Unprotect '(motdepass)
Dim c&: c = T.Column: On Error Resume Next
Cells(T.Row, ((c = 5) * -3) + ((c = 18) * -16) + ((c = 24) * -23)) = Date
ActiveSheet.Unprotect
End Sub
Comme l'a indiqué fanfan38
Il faut mettre le code dans la feuille concernée
(et pas dans un module standard)
Donc sur l'onglet de la feuille, faire clic-droit -> Visualiser le code
C'est là qu'il faudra copier le code VBA
(Dans la partie blanche de l'écran, à droite)

NB: Comme disait, maître Yoda:
"L'échec, le meilleur des maîtres, être"
;)

EDITION: Bonjour à toi également fanfan38 ...:rolleyes:
(cf message#3)
 

ugo13

XLDnaute Nouveau
Messieurs, Merci pour votre patience.

J'ai bien copié le code, ce dernier me permet de bien avoir les deux nouvelles saisies à l'endroit souhaité!

En revanche dès lors que je sélectionne sur une des cellules reliées à la saisie automatique, la date s'affiche. C'est problématique, dans le premier code il fallait entrer et valider une donnée pour voir la saisie s'effectuer.

Le second point concerne la protection de la feuille sur les colonnes que je souhaite rendre non modifiable par les utilisateurs, avec votre code, je ne peux plus protéger la feuille.

En vous remerciant Fanfan et Staple pour votre aide

Ugo, Jeune padawan
 

Staple1600

XLDnaute Barbatruc
Re

[aparté]
Pour ce qui me concerne, je n'ai fait que me baser sur le code lu en message#2.
Et ensuite ai proposé des variantes syntaxiques juste pour éviter de devoir égrener les minutes de mon confinement devant mon poste de TV.
Et si dans la foulée, mes récréations VBAistiques servent à quelqu'un.
Tant mieux ;)
[/aparté]
 

fanfan38

XLDnaute Barbatruc
La feuille est déprotégée le temps de la saisie et la protection est remise dans la même macro soit quelques centième de seconde...
remplace
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
par
Private Sub Worksheet_Change(ByVal Target As Range)
pour que la date ne s'affiche qu'au changement
A+ François
 

ugo13

XLDnaute Nouveau
Bonjour Fanfan,

On avance à grand pas, mercin j'ai bien les données qui s'actualisent dès lors que je valide la cellule sur les 3 positions souhaitées! Je peux également protéger la feuille

J'ai déverouillé toutes les cellules colorées que je souhaite rendre accessible aux utilisateurs!

Le dernier problème réside dans la protection de la feuille, lorsque la feuille est protégée dès lors que je valide une cellule, dans une des 3 colonnes, la date s'affiche bien en revanche, la feuille n'est plus protégée.


https://www.cjoint.com/c/JCzjCG7avF2

Si vous arrivez à répondre ce dernier problème, mon probléme sera résolu!

Ugo

Merci !
 

fanfan38

XLDnaute Barbatruc
La feuille est toujours protégée
ActiveSheet.Unprotect
suivi du mot de passe entre parenthèse
enlève la protection le temps de faire la macro...

ActiveSheet.protect suivi du mot de passe entre parenthèse
remet la protection en fin de macro
Donc ta feuille est protégée...
A+ François
 

ugo13

XLDnaute Nouveau
Fanfan,

Sur le code ci dessus à la fin il y avait "ActiveSheet.Unprotect", j'ai mis ActiveSheet.protect.
ça fonctionne ! Merci pour ton aide et ta réactivité!!

ça me donne envie d'apprendre à utiliser VBA toutes ces fonctionnalités, mais pas facile dé débuter.

Probléme résolu

A+
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 041
Membres
101 879
dernier inscrit
Arthur M