Protéger mes cellule en laissant la macro
Résolu/Fermé
A voir également:
- Protéger mes cellule en laissant la macro
- Proteger cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
5 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
12 déc. 2009 à 17:30
12 déc. 2009 à 17:30
bonjour
Dans ta macro il faut déprotéger au début puis remettre la protection en fin.
Dans ta macro il faut déprotéger au début puis remettre la protection en fin.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
12 déc. 2009 à 21:48
12 déc. 2009 à 21:48
bonjour
Non tu avais bien expliqué mais ma réponse était trop laconique
Si tu codes ainsi ta macro elle peut se dérouler car tu déprotèges mais en fin tu remet la protection.
Non tu avais bien expliqué mais ma réponse était trop laconique
Public Sub ta_macro() ActiveSheet.Unprotect ("mot de passe éventuel") ' ton code ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels) End Sub
Si tu codes ainsi ta macro elle peut se dérouler car tu déprotèges mais en fin tu remet la protection.
J'ai essayé d'introduire cette fonction dans ma macro mais cela ne fonctionne pas ou dois-je l'écrire car voici ma macro d'origine :
Sub cache_col()
'
' cache_col Macro
' Macro enregistrée le 26/11/2009 par Claudine Camorali
'
' Touche de raccourci du clavier: Ctrl+o
'
Application.Run _
"'Modèles tableau préparation declaration annuelle 7.1.xls'!cache_col"
Application.Goto Reference:="cache"
Dim ligne As Long, col As Integer
For col = 1 To 67
For ligne = 2 To 19
If Cells(ligne, col).Value <> 0 Then Exit For
Next ligne
If ligne > 19 Then Columns(col).Hidden = True
Next col
End Sub
Sub MasquerColonne()
Dim I As Integer, J As Integer
I = 5
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Do While Cells(15, I).Value <> ""
I = I + 1
Loop
I = I - 1
J = 5
For J = 5 To I
If Cells(25, J).Value = 0 Then
Columns(J).Select
Selection.EntireColumn.Hidden = True
End If
Next
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
End Sub
Sub DeMasquerColonne()
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Cells.Select
Selection.EntireColumn.Hidden = False
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
End Sub
Merci pour votre aide
Sub cache_col()
'
' cache_col Macro
' Macro enregistrée le 26/11/2009 par Claudine Camorali
'
' Touche de raccourci du clavier: Ctrl+o
'
Application.Run _
"'Modèles tableau préparation declaration annuelle 7.1.xls'!cache_col"
Application.Goto Reference:="cache"
Dim ligne As Long, col As Integer
For col = 1 To 67
For ligne = 2 To 19
If Cells(ligne, col).Value <> 0 Then Exit For
Next ligne
If ligne > 19 Then Columns(col).Hidden = True
Next col
End Sub
Sub MasquerColonne()
Dim I As Integer, J As Integer
I = 5
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Do While Cells(15, I).Value <> ""
I = I + 1
Loop
I = I - 1
J = 5
For J = 5 To I
If Cells(25, J).Value = 0 Then
Columns(J).Select
Selection.EntireColumn.Hidden = True
End If
Next
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
End Sub
Sub DeMasquerColonne()
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Cells.Select
Selection.EntireColumn.Hidden = False
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
End Sub
Merci pour votre aide
J'ai essayé d'introduire cette fonction dans ma macro mais cela ne fonctionne pas ou dois-je l'écrire car voici ma macro d'origine :
Sub cache_col()
'
' cache_col Macro
' Macro enregistrée le 26/11/2009 par Claudine Camorali
'
' Touche de raccourci du clavier: Ctrl+o
'
Application.Run _
"'Modèles tableau préparation declaration annuelle 7.1.xls'!cache_col"
Application.Goto Reference:="cache"
Dim ligne As Long, col As Integer
For col = 1 To 67
For ligne = 2 To 19
If Cells(ligne, col).Value <> 0 Then Exit For
Next ligne
If ligne > 19 Then Columns(col).Hidden = True
Next col
End Sub
Sub MasquerColonne()
Dim I As Integer, J As Integer
I = 5
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Do While Cells(15, I).Value <> ""
I = I + 1
Loop
I = I - 1
J = 5
For J = 5 To I
If Cells(25, J).Value = 0 Then
Columns(J).Select
Selection.EntireColumn.Hidden = True
End If
Next
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
End Sub
Sub DeMasquerColonne()
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Cells.Select
Selection.EntireColumn.Hidden = False
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
End Sub
Merci pour votre aide
Sub cache_col()
'
' cache_col Macro
' Macro enregistrée le 26/11/2009 par Claudine Camorali
'
' Touche de raccourci du clavier: Ctrl+o
'
Application.Run _
"'Modèles tableau préparation declaration annuelle 7.1.xls'!cache_col"
Application.Goto Reference:="cache"
Dim ligne As Long, col As Integer
For col = 1 To 67
For ligne = 2 To 19
If Cells(ligne, col).Value <> 0 Then Exit For
Next ligne
If ligne > 19 Then Columns(col).Hidden = True
Next col
End Sub
Sub MasquerColonne()
Dim I As Integer, J As Integer
I = 5
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Do While Cells(15, I).Value <> ""
I = I + 1
Loop
I = I - 1
J = 5
For J = 5 To I
If Cells(25, J).Value = 0 Then
Columns(J).Select
Selection.EntireColumn.Hidden = True
End If
Next
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
End Sub
Sub DeMasquerColonne()
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Cells.Select
Selection.EntireColumn.Hidden = False
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
End Sub
Merci pour votre aide
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
14 déc. 2009 à 14:30
14 déc. 2009 à 14:30
Salut,
Tu as trois procédures. Tu dois donc noter les lignes de code de gbinform dans les 3. En général, pour ne pas te planter, tu "déprotèges" ta feuille en début de macro (après Sub ...())et tu protèges avant la fin (donc avant la ligne End sub). Cela donne dans tes 3 procédures :
Sub cache_col()
'
' cache_col Macro
' Macro enregistrée le 26/11/2009 par Claudine Camorali
'
' Touche de raccourci du clavier: Ctrl+o
'
ActiveSheet.Unprotect ("mot de passe éventuel")
Application.Run _
"'Modèles tableau préparation declaration annuelle 7.1.xls'!cache_col"
Application.Goto Reference:="cache"
Dim ligne As Long, col As Integer
For col = 1 To 67
For ligne = 2 To 19
If Cells(ligne, col).Value <> 0 Then Exit For
Next ligne
If ligne > 19 Then Columns(col).Hidden = True
Next col
ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels)
End Sub
Sub MasquerColonne()
Dim I As Integer, J As Integer
ActiveSheet.Unprotect ("mot de passe éventuel")
I = 5
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Do While Cells(15, I).Value <> ""
I = I + 1
Loop
I = I - 1
J = 5
For J = 5 To I
If Cells(25, J).Value = 0 Then
Columns(J).Select
Selection.EntireColumn.Hidden = True
End If
Next
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels)
End Sub
Sub DeMasquerColonne()
Dim CelluleSelectionnee
ActiveSheet.Unprotect ("mot de passe éventuel")
CelluleSelectionnee = ActiveCell.AddressLocal
Cells.Select
Selection.EntireColumn.Hidden = False
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels)
End Sub
Tu as trois procédures. Tu dois donc noter les lignes de code de gbinform dans les 3. En général, pour ne pas te planter, tu "déprotèges" ta feuille en début de macro (après Sub ...())et tu protèges avant la fin (donc avant la ligne End sub). Cela donne dans tes 3 procédures :
Sub cache_col()
'
' cache_col Macro
' Macro enregistrée le 26/11/2009 par Claudine Camorali
'
' Touche de raccourci du clavier: Ctrl+o
'
ActiveSheet.Unprotect ("mot de passe éventuel")
Application.Run _
"'Modèles tableau préparation declaration annuelle 7.1.xls'!cache_col"
Application.Goto Reference:="cache"
Dim ligne As Long, col As Integer
For col = 1 To 67
For ligne = 2 To 19
If Cells(ligne, col).Value <> 0 Then Exit For
Next ligne
If ligne > 19 Then Columns(col).Hidden = True
Next col
ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels)
End Sub
Sub MasquerColonne()
Dim I As Integer, J As Integer
ActiveSheet.Unprotect ("mot de passe éventuel")
I = 5
Dim CelluleSelectionnee
CelluleSelectionnee = ActiveCell.AddressLocal
Do While Cells(15, I).Value <> ""
I = I + 1
Loop
I = I - 1
J = 5
For J = 5 To I
If Cells(25, J).Value = 0 Then
Columns(J).Select
Selection.EntireColumn.Hidden = True
End If
Next
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels)
End Sub
Sub DeMasquerColonne()
Dim CelluleSelectionnee
ActiveSheet.Unprotect ("mot de passe éventuel")
CelluleSelectionnee = ActiveCell.AddressLocal
Cells.Select
Selection.EntireColumn.Hidden = False
Range(CelluleSelectionnee).Select
MsgBox "Traitement Terminé"
ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels)
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
14 déc. 2009 à 22:13
14 déc. 2009 à 22:13
Il faudrait nous en dire plus sur votre tableau. Le mieux serait d'en faire une copie sans données confidentielles avec quelques petites explications sur ce que vous désirez et le placer ici grâce à c-joint par exemple.
voici mon tableau :
Il a 67 colonnes avec differents fluides
Catégorie de fluide HFC - R23 HFC - R32 HFC - R143a
Stock neuf 01/01/09 0 5 6
Stock récupéré 01/01/09 0 0 6 5
Quantités achetées 0 4 7
Quantités chargées dans les équipements 0 0 0 3
Quantités cédées à d'autres opérateurs 0 0 0 5
Quantités récupérées Quantités totales récupérées 0 0 5 6
Quantités traitées et recyclées 0 0 4 2
Quantités traitées et régénérées 0 0 3 2
Quantités traitées et détruites 0 0 0 1
Quantités remises aux distributeurs 0 0 0 2
Quantités réintroduites 0 0 0 3
Stock neuf et recupéré théoriques 0 0 20 21
Stock neuf 31/12/09 6 10 2 6
Stock récupéré 31/12/09 0 9 4 8
Somme des quantités par fluide 6 19 53 77
Cohérence stock -100 -100 -280 44
Cohérence récupéré 0 0 -2 -4
Nombre d'intervention 0 0 1 1
toutes les cellules ou il y a des chiffres il y a des formules et ma macro doit dire quand ma cellule 27 = 0 masque la colonne
Et depuis que j'ai modifié ma macro avec la mode protection et déprotection ma macro ne fonctionne pas sur toutes les colonnes
Merci de votre aide
Il a 67 colonnes avec differents fluides
Catégorie de fluide HFC - R23 HFC - R32 HFC - R143a
Stock neuf 01/01/09 0 5 6
Stock récupéré 01/01/09 0 0 6 5
Quantités achetées 0 4 7
Quantités chargées dans les équipements 0 0 0 3
Quantités cédées à d'autres opérateurs 0 0 0 5
Quantités récupérées Quantités totales récupérées 0 0 5 6
Quantités traitées et recyclées 0 0 4 2
Quantités traitées et régénérées 0 0 3 2
Quantités traitées et détruites 0 0 0 1
Quantités remises aux distributeurs 0 0 0 2
Quantités réintroduites 0 0 0 3
Stock neuf et recupéré théoriques 0 0 20 21
Stock neuf 31/12/09 6 10 2 6
Stock récupéré 31/12/09 0 9 4 8
Somme des quantités par fluide 6 19 53 77
Cohérence stock -100 -100 -280 44
Cohérence récupéré 0 0 -2 -4
Nombre d'intervention 0 0 1 1
toutes les cellules ou il y a des chiffres il y a des formules et ma macro doit dire quand ma cellule 27 = 0 masque la colonne
Et depuis que j'ai modifié ma macro avec la mode protection et déprotection ma macro ne fonctionne pas sur toutes les colonnes
Merci de votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
15 déc. 2009 à 13:12
15 déc. 2009 à 13:12
Bonjour,
Je ne comprends pas tout. Désolé. Tu veux :
Sur 67 colonnes, si la cellule ligne 27 = 0 alors on masque la colonne. C'est bien cela? Si oui ceci devrait faire l'affaire :
Sub MasquerColonne()
Dim I As Integer
ActiveSheet.Unprotect ("mot de passe éventuel")
For I = 1 to 67
If Cells(27, I).Value = 0 Then
Columns(I).EntireColumn.Hidden = True
Enf If
Next I
MsgBox "Traitement Terminé"
ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels)
End Sub
Enregistre ton fichier sous un autre nom, entre ce code dans un module, teste le et reviens nous dire ce qu'il en est.
Je ne comprends pas tout. Désolé. Tu veux :
Sur 67 colonnes, si la cellule ligne 27 = 0 alors on masque la colonne. C'est bien cela? Si oui ceci devrait faire l'affaire :
Sub MasquerColonne()
Dim I As Integer
ActiveSheet.Unprotect ("mot de passe éventuel")
For I = 1 to 67
If Cells(27, I).Value = 0 Then
Columns(I).EntireColumn.Hidden = True
Enf If
Next I
MsgBox "Traitement Terminé"
ActiveSheet.Protect ("mot de passe éventuel", autres paramètres éventuels)
End Sub
Enregistre ton fichier sous un autre nom, entre ce code dans un module, teste le et reviens nous dire ce qu'il en est.
Bonjour,
J'ai fait ma blonde car ma formule fonctionne mais mon collègue qui devais rentré les formules dans toutes les cellules avait fait des boullettes dans les copies de cellules c'est pour cela que ma fonction ne marcher pas.
Je vous remerci très sincèrement pour l'implication de votre personne afin de m'aider dans ma tache.
Merci encor
J'ai fait ma blonde car ma formule fonctionne mais mon collègue qui devais rentré les formules dans toutes les cellules avait fait des boullettes dans les copies de cellules c'est pour cela que ma fonction ne marcher pas.
Je vous remerci très sincèrement pour l'implication de votre personne afin de m'aider dans ma tache.
Merci encor
12 déc. 2009 à 21:30
Ma macro que j'ai créer est pour masquer des colonnes dont mon résulatat d'une cellule sera = à zéro
Les personnes qui devront compléter le tableau devront cliquer sur le bouton de la macro pour masquer les colonnes afin de réduire le tableau.
Mon tableau est plein de formule, et je voudrais que les personne qui doivent le compléter ne touche pas aux formule.
Donc pour cela que je voudrais savoir comment protéger mes cellules ou il y a des formules et que ma macro fonctionne toujours même si ma cellule qui la fait fonctionner est protégée.
Merci de votre aide