Figer des feuilles apres validation

F

foudegospel

Guest
Bonjour,
J ai fait pour besoisn personnel un classeur excel avec une feuille pour chaque mois de l'annéepour établir des bulletins de salaire.
Ceux qui établissent ce bulletin entre leurs données administratives et financières dans feuille nommée donnée.
C'est cette feuille qui paramètre les douzes bulletins de salaire.
Je voudrais qu'apres la saisie du mois de fevrier par exemple l'utilisateur coche une case validation qui figerait automatiquement la feuille. Ainsi si le taux horaire change en mars la feuille de Février reste figée avec les parametres utilisés lors de son établissement. (En clair on garde les valeurs mais les liens disparaissent.
Je ne sais pas si je suis clair dan ma description du problème mais si quelqu un a une idée je suis preneur.

d'avance merci
 
P

Patrick C

Guest
Salut foudegospel et salut le forum,

tu peux enregistrer une macro qui copie une cellule et qui la colle par dessus elle même, mais en utilisant le collage spécial.
Menu-> Edition -> Collage spécial
et dans ce menu tu choisis valeur.

comme ça ta valeur est figée
tu peux répéter ça pour l'ensemble des cellules que tu as à figer.

à plus

Patrick
 
F

foudegospel

Guest
Bonjour,
P royer m a envoyé une solution qui fonctionne je la cite ci-apres pour que la liste en profite


il te faut créer une macro qui s'activera sur ce bouton et qui fera la chose suivante :

-> sélectionner les cellules qui contiennent des formules, et coller leur valeurs.

-> soit tu fais une copie, puis un collage spécial valeurs
-> soit tu changes la formule de ces cellules.

teste voir si les isntructions macro à la volée ci-dessous fonctionne
for each cl in range("A1:A10").specialcells(xlcelltypeformulas)
cl.formula=cl.value
next cl

Mon seul problème je suis sur des feuilles protégées la macro fonctionne quand je retire la protection masi ne fonctionnepas quand on la remet.
Une autre idée?
 
B

bricofire

Guest
La fonction "collage spécial" dans le menu édition convient parfaitement , cf aide en ligne d'excel. Il suffit de construire une macro en visual qui copie le feuille entière dans une nouvelle mais en ne prenant que les valeurs dans les cases, ensuite la feuille originale peut être détruite par la macro et la nouvelle renommée avec l'ancien nom, ce n'est pas trop complexe, mieux vaut garder une copie des orginaux en backup. Pour faciliter la rédaction, commencer par enregistrer une macro simple de copie spéciale sur une cellulle avec le moteur, en faisant modifier ensuite, ça donne la structure des instructions.
bon courage !
 
B

bricofire

Guest
Sub Protect()
Dim FeuillP
Bon, je nai lu la suite qu'après ma réponse, si la solution que tu as te convient, voilà deux exemples de routines que tu peux ajouter pour déprotéger les feuilles au départ et les reprotéger à la fin !
Si tu utilise souvent des feuilles protégées, il peut-être bon d'en faire des macros individuelles et de leurs attribuer un bouton, pour un éventuel mot de passe, voir l'aide en ligne visual, c'est prévu si besoin....

cordialement,

Application.ScreenUpdating = False
For Each FeuillP In Worksheets
If FeuillP.Protect = False Then
FeuillP.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
Next
Application.ScreenUpdating = True
End Sub

Sub NoProtect()
Dim FeuillP2
Application.ScreenUpdating = False
For Each FeuillP2 In Worksheets
If FeuillP2.Protect = True Then
FeuillP2.Unprotect
End If
Next
Application.ScreenUpdating = True
End Sub
 
B

bricofire

Guest
Mauvais collage, voici le bon :


Sub Protect()
Dim FeuillP
Application.ScreenUpdating = False
For Each FeuillP In Worksheets
If FeuillP.Protect = False Then
FeuillP.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
Next
Application.ScreenUpdating = True
End Sub

Sub NoProtect()
Dim FeuillP2
Application.ScreenUpdating = False
For Each FeuillP2 In Worksheets
If FeuillP2.Protect = True Then
FeuillP2.Unprotect
End If
Next
Application.ScreenUpdating = True
End Sub
 

Statistiques des forums

Discussions
312 393
Messages
2 087 965
Membres
103 687
dernier inscrit
olivier72