A voir également:
- Verrouiller cellule avec macro
- Verrouiller cellule excel - Guide
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Aller à la ligne dans une cellule excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
5 réponses
Bonjour,
Il n'y a pas, à ma connaissance, de formule pour faire ce que tu as dit. Mais avec une ou deux macros en VBA, c'est assez simple.
Est-ce que tu sait créer des macros, ou est-ce tu as des notions de VBA?
A+.
Il n'y a pas, à ma connaissance, de formule pour faire ce que tu as dit. Mais avec une ou deux macros en VBA, c'est assez simple.
Est-ce que tu sait créer des macros, ou est-ce tu as des notions de VBA?
A+.
Dommage que tu ne connaisse pas le VBA.
Pour créer des macros, c'est assez simple.
Mais d'abord il faut savoir comment protéger les cellules. Ou plutot comment ne pas verrouiler une cellule.
Par défaut, les cellules d'une feuilles sont verrouillées, c'est à dire que lorsqu'on protège une feuille (menu Outils/Protection/Proteger la feuille...) les cellules qui ont la propriété verrouillé seront protégées en modification.
Donc, déja se poser la question: quelles sont les cellules auquelles je veux avoir accès en écriture même quand la feuille est protégée.
S'il n'y en a aucune, très bien, on passe à la suite.
Menu Outils/Macro/Nouvelle Macro : donner un nom ex. macro1 Ok
Selectionner la feuille "Semaine1" (ou je sais quoi)
Menu Outils/Protection/Proteger la feuille ... Ok (ne met pas de mot de passe pour l'instant)
Menu Outils/Macros/Arrêter l'enregistrement
Appuyer Alt F11: tu accèdes à l'éditeur Visual Basic, ouvrir Module1, tu y trouves ta macro1
Cette macros met la protection sur la feuille "Semaine1", en la modifiant un peu, on peut l'utiliser pour n'importe quelle feuille, il faut juste mettre le nom de la feuille en variable. Pour le moment on ne fait rien.
Faire une autre macro pour déverrouiller la même feuille.
Retournes dans ton tableau. Recommence Menu Outils/Macro/Nouvelle Macro...
Déverrouilles la feuille. Arrêter l'enregistrement. La deuxième macro est créée.
Jusque là c'est facile. Tu peux t'en sortir. Après ça se complique un petit peu. Si tu peux déjà faire la première partie alors on verra.
A+.
Pour créer des macros, c'est assez simple.
Mais d'abord il faut savoir comment protéger les cellules. Ou plutot comment ne pas verrouiler une cellule.
Par défaut, les cellules d'une feuilles sont verrouillées, c'est à dire que lorsqu'on protège une feuille (menu Outils/Protection/Proteger la feuille...) les cellules qui ont la propriété verrouillé seront protégées en modification.
Donc, déja se poser la question: quelles sont les cellules auquelles je veux avoir accès en écriture même quand la feuille est protégée.
S'il n'y en a aucune, très bien, on passe à la suite.
Menu Outils/Macro/Nouvelle Macro : donner un nom ex. macro1 Ok
Selectionner la feuille "Semaine1" (ou je sais quoi)
Menu Outils/Protection/Proteger la feuille ... Ok (ne met pas de mot de passe pour l'instant)
Menu Outils/Macros/Arrêter l'enregistrement
Appuyer Alt F11: tu accèdes à l'éditeur Visual Basic, ouvrir Module1, tu y trouves ta macro1
Cette macros met la protection sur la feuille "Semaine1", en la modifiant un peu, on peut l'utiliser pour n'importe quelle feuille, il faut juste mettre le nom de la feuille en variable. Pour le moment on ne fait rien.
Faire une autre macro pour déverrouiller la même feuille.
Retournes dans ton tableau. Recommence Menu Outils/Macro/Nouvelle Macro...
Déverrouilles la feuille. Arrêter l'enregistrement. La deuxième macro est créée.
Jusque là c'est facile. Tu peux t'en sortir. Après ça se complique un petit peu. Si tu peux déjà faire la première partie alors on verra.
A+.
salut calibos,
ok j'ai bien compris ce que tu m'as dit : je crée une macro, j'enregistre et tout ce que je fais sera traduit en visual basic dans ladite macro, et pour terminer,j'arrete d'enregistrer.Ca fonctionne tres bien et ca me donne deja une première idée de ce qu'il faut faire.
Mais je dois faire une macro qui verrouille automatiquement les 50 cellules de mes 50 feuilles du genre :
sub verr(semaine)
for feuille= feuil1 to feuil50 {ce sont les "sheets "}
oter protection feuilles
verrouiller cellule (semaine) {ce sont les "range"}
remettre la protection feuilles
next feuille
Avec feuille qui serait une variable contenant les valeurs "feuil1....à feuil50 et semaine une variable entiere allant de 1 à 52
Donc si je lance verr(1), la macro me verrouillerait la 1ere cellule de chacune des 50 feuilles
et si je lance verr(2), la macro verrouillerait la 2è cellule de chacune des 50 feuilles etc... etc..
C'est aisément programmable dans un langage du genre turbo pascal ou basic mais là en visual basic, je sèche un peu
Alors si tu as une idée...... merci d'avance! et si tu m'envoies bouler, je comprendrai aussi!!!
(c'est compliqué pour finalement peu de choses!)
Salutations
A+ si tu veux bien
ok j'ai bien compris ce que tu m'as dit : je crée une macro, j'enregistre et tout ce que je fais sera traduit en visual basic dans ladite macro, et pour terminer,j'arrete d'enregistrer.Ca fonctionne tres bien et ca me donne deja une première idée de ce qu'il faut faire.
Mais je dois faire une macro qui verrouille automatiquement les 50 cellules de mes 50 feuilles du genre :
sub verr(semaine)
for feuille= feuil1 to feuil50 {ce sont les "sheets "}
oter protection feuilles
verrouiller cellule (semaine) {ce sont les "range"}
remettre la protection feuilles
next feuille
Avec feuille qui serait une variable contenant les valeurs "feuil1....à feuil50 et semaine une variable entiere allant de 1 à 52
Donc si je lance verr(1), la macro me verrouillerait la 1ere cellule de chacune des 50 feuilles
et si je lance verr(2), la macro verrouillerait la 2è cellule de chacune des 50 feuilles etc... etc..
C'est aisément programmable dans un langage du genre turbo pascal ou basic mais là en visual basic, je sèche un peu
Alors si tu as une idée...... merci d'avance! et si tu m'envoies bouler, je comprendrai aussi!!!
(c'est compliqué pour finalement peu de choses!)
Salutations
A+ si tu veux bien
Salut,
Je vois que tu es familiarisé la programmation, tu n'auras pas de mal comprendre ce que vais essayer de t'expliquer.
Dans le fichier que tu pourras télécharger sous ce lien, j'ai programmé un exemple avec Excel 2003.
http://www.cijoint.fr/cjlink.php?file=cj200912/cijp9LZJce.xls
Il y a trois feuilles: Feuil1, Feuil2, Feuil3
Les deux premières sont des feuilles de versements et la troisième c'est la feuille récapitulative.
Il y a aussi un module qui contient les deux macros que je t'avais demandé d'enregister. On y accède par le raccourci Alt F11 ou par Menu Outils/Macros/Visual Basic Editor.
Vas voir comment j'ai paramétré les deux macros.
Dans l'exploratteur de projet (à gauche), double clic sur Feuil3, là tu verras la procédure évènementielle qui s'exécute automatiquement quand on modifie la feuille:
Voilà, c'est fait. Adapte cet exemple à ton projet.
Bonne continuation.
Je vois que tu es familiarisé la programmation, tu n'auras pas de mal comprendre ce que vais essayer de t'expliquer.
Dans le fichier que tu pourras télécharger sous ce lien, j'ai programmé un exemple avec Excel 2003.
http://www.cijoint.fr/cjlink.php?file=cj200912/cijp9LZJce.xls
Il y a trois feuilles: Feuil1, Feuil2, Feuil3
Les deux premières sont des feuilles de versements et la troisième c'est la feuille récapitulative.
Il y a aussi un module qui contient les deux macros que je t'avais demandé d'enregister. On y accède par le raccourci Alt F11 ou par Menu Outils/Macros/Visual Basic Editor.
Vas voir comment j'ai paramétré les deux macros.
Sub Verrouiller(feuille As String) 'le nom de la feuille est passé en argument ' Sheets(feuille).Select 'la feuille est sélectionnée et protétée ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub Sub Deverrouiller(feuille As String) 'le nom de la feuille est passé en argument ' Sheets(feuille).Select 'la feuille est sélectionnée et déverrouillée ActiveSheet.Unprotect End Sub
Dans l'exploratteur de projet (à gauche), double clic sur Feuil3, là tu verras la procédure évènementielle qui s'exécute automatiquement quand on modifie la feuille:
Private Sub Worksheet_Change(ByVal Target As Range) Dim lig As Integer, col As Integer, feuille As String, status As Integer 'adresse de la cellule modifiée lig = Target.Row col = Target.Column 'exemple avec une valeur numérique (1=Validés ; toute autre valeur = Débloqués) If col = 2 Then 'si la colonne modifiée est la colonne 2 ("B") feuille = Cells(lig, col - 1).Value 'le nom de la feuille se trouve dans la cellule de gauche status = Cells(lig, col).Value 'ce qu'il faut faire Application.ScreenUpdating = False If status = 1 And feuille <> "" Then Call Verrouiller(feuille) MsgBox "Les versements de la " & feuille & " sont validés" Else Call Deverrouiller(feuille) MsgBox "Les versements de la " & feuille & " sont débloqués" End If Sheets("Feuil3").Select Application.ScreenUpdating = True End If 'exemple avec un texte (Validés ; Débloqués) If col = 6 Then 'si la colonne modifiée est la colonne 6 ("F") feuille = Cells(lig, col - 1).Value If Cells(lig, col).Value = "Validés" Then status = 1 Else status = 0 Application.ScreenUpdating = False If status = 1 And feuille <> "" Then Call Verrouiller(feuille) MsgBox "Les versements de la " & feuille & " sont Validés" Else Call Deverrouiller(feuille) MsgBox "Les versements de la " & feuille & " sont Débloqués" End If Sheets("Feuil3").Select Application.ScreenUpdating = True End If End Sub
Voilà, c'est fait. Adapte cet exemple à ton projet.
Bonne continuation.
En relisant, je m'apperçois d'un petit bug
Modifier la macro Private Sub Worksheet_Change(ByVal Target As Range) pour eviter une erreur si le nom de la feuille est vide
A+.
Modifier la macro Private Sub Worksheet_Change(ByVal Target As Range) pour eviter une erreur si le nom de la feuille est vide
If feuille<>"" Then If status = 1 Then Call Verrouiller(feuille) MsgBox "Les versements de la " & feuille & " sont validés" Else Call Deverrouiller(feuille) MsgBox "Les versements de la " & feuille & " sont débloqués" End If End If
A+.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
15 déc. 2009 à 23:31
15 déc. 2009 à 23:31
Bonsoir,
C'est pas plus simple de faire directement 'outils / protection / protéger la feuille' une fois les saisies terminées ?
eric
C'est pas plus simple de faire directement 'outils / protection / protéger la feuille' une fois les saisies terminées ?
eric
15 déc. 2009 à 15:34
17 déc. 2009 à 18:01
Merci pour toutes tes infos, avec un peu de retard
J'ai reussi sous vba a faire une macro pour mon probléme, mais voilà maintenant que excel me demande un mot de passe pour oter la protection de chacune de mes feuilles, alors que je n'en ai entré aucun!!!
Resultat : touts mes feuilles sont protegees et je n'arrive pas à trouver le mot de passe (certainement VBA a du m'en mettre un !!!
Que faire?
Merci d'avance!