OVH Cloud OVH Cloud

Compatibilté de différentes versions VBA

12 réponses
Avatar
coco74
Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme suit :

ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros, les
filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il semble ne
pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les deux
versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel mais
il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco

10 réponses

1 2
Avatar
papou
Bonjour
Globalement je pense que si tu enlèves les Allow*, ça devrait fonctionner
avec 2000.
Donc tu ne gardes que :
ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True

Cordialement
Pascal
Avatar
coco74
Oui bien sûr, mais je ne plus utiliser les filtres et les formats. La
question est justement comment les utiliser avec Excel 2000.
--
coco



Bonjour
Globalement je pense que si tu enlèves les Allow*, ça devrait fonctionner
avec 2000.
Donc tu ne gardes que :
ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True

Cordialement
Pascal





Avatar
michdenis
Bonjour Coco74,

Si tu protège ta feuille de cette manière, tu ne pourras pas trier
par les commandes du menu de la feuille de calcul, mais tu pourras
le faire par macros.... comme dans l'exemple suivant :

à inscrire dans le ThisWorkbook de ton classeur
'---------------------
Private Sub Workbook_Open()

With Feuil1
.Protect True, True, True, True, True
End With

End Sub
'---------------------

'-------------------
Sub tri()

With Range("Feuil1!A1:A15")
.Sort Key1:=Range("Feuil1!A1")
End With
End Sub
'-------------------


Salutations!




"coco74" a écrit dans le message de news:
Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme suit :

ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros, les
filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il semble ne
pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les deux
versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel mais
il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco
Avatar
coco74
Merci MichDenis de ta réponse.

Je n'ai pas parlé de tri, mais de filtre ! !
J'ai trouvé une ecriture qui semble fonctionner pour les deux versions
d'excel :
F1.EnableAutoFilter = True

Mais ce que je n'arrive pas à faire c'est rendre accessible le formatage des
cellules dans une feuille protégée sous Excel 2000. (pour 2003, c'est :
AllowFormattingCells:=True)
As-tu une idée ?
--
coco



Bonjour Coco74,

Si tu protège ta feuille de cette manière, tu ne pourras pas trier
par les commandes du menu de la feuille de calcul, mais tu pourras
le faire par macros.... comme dans l'exemple suivant :

à inscrire dans le ThisWorkbook de ton classeur
'---------------------
Private Sub Workbook_Open()

With Feuil1
.Protect True, True, True, True, True
End With

End Sub
'---------------------

'-------------------
Sub tri()

With Range("Feuil1!A1:A15")
.Sort Key1:=Range("Feuil1!A1")
End With
End Sub
'-------------------


Salutations!




"coco74" a écrit dans le message de news:
Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme suit :

ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros, les
filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il semble ne
pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les deux
versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel mais
il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco





Avatar
michdenis
Bonjour Coco47,

En protégeant ta feuille comme ceci :
Le filtre automatique sera disponible seulement si les
boutons du filtre automatique sont déjà sur ta plage
de cellules avant de protéger ta feuille.

'-------------------------
Private Sub Workbook_Open()
With Feuil1
.Unprotect
.EnableAutoFilter = True
.Protect True, True, True, True, True
End With

End Sub
'-------------------------


Salutations!


"coco74" a écrit dans le message de news:
Merci MichDenis de ta réponse.

Je n'ai pas parlé de tri, mais de filtre ! !
J'ai trouvé une ecriture qui semble fonctionner pour les deux versions
d'excel :
F1.EnableAutoFilter = True

Mais ce que je n'arrive pas à faire c'est rendre accessible le formatage des
cellules dans une feuille protégée sous Excel 2000. (pour 2003, c'est :
AllowFormattingCells:=True)
As-tu une idée ?
--
coco



Bonjour Coco74,

Si tu protège ta feuille de cette manière, tu ne pourras pas trier
par les commandes du menu de la feuille de calcul, mais tu pourras
le faire par macros.... comme dans l'exemple suivant :

à inscrire dans le ThisWorkbook de ton classeur
'---------------------
Private Sub Workbook_Open()

With Feuil1
.Protect True, True, True, True, True
End With

End Sub
'---------------------

'-------------------
Sub tri()

With Range("Feuil1!A1:A15")
.Sort Key1:=Range("Feuil1!A1")
End With
End Sub
'-------------------


Salutations!




"coco74" a écrit dans le message de news:
Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme suit :

ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros, les
filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il semble ne
pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les deux
versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel mais
il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco





Avatar
coco74
effectivement, ca marche !

Et pour rendre en plus accessible le formatage des cellules (comme dans
2003) ?
--
coco


"michdenis" wrote:

Bonjour Coco47,

En protégeant ta feuille comme ceci :
Le filtre automatique sera disponible seulement si les
boutons du filtre automatique sont déjà sur ta plage
de cellules avant de protéger ta feuille.

'-------------------------
Private Sub Workbook_Open()
With Feuil1
.Unprotect
.EnableAutoFilter = True
.Protect True, True, True, True, True
End With

End Sub
'-------------------------


Salutations!


"coco74" a écrit dans le message de news:
Merci MichDenis de ta réponse.

Je n'ai pas parlé de tri, mais de filtre ! !
J'ai trouvé une ecriture qui semble fonctionner pour les deux versions
d'excel :
F1.EnableAutoFilter = True

Mais ce que je n'arrive pas à faire c'est rendre accessible le formatage des
cellules dans une feuille protégée sous Excel 2000. (pour 2003, c'est :
AllowFormattingCells:=True)
As-tu une idée ?
--
coco



Bonjour Coco74,

Si tu protège ta feuille de cette manière, tu ne pourras pas trier
par les commandes du menu de la feuille de calcul, mais tu pourras
le faire par macros.... comme dans l'exemple suivant :

à inscrire dans le ThisWorkbook de ton classeur
'---------------------
Private Sub Workbook_Open()

With Feuil1
.Protect True, True, True, True, True
End With

End Sub
'---------------------

'-------------------
Sub tri()

With Range("Feuil1!A1:A15")
.Sort Key1:=Range("Feuil1!A1")
End With
End Sub
'-------------------


Salutations!




"coco74" a écrit dans le message de news:
Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme suit :

ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros, les
filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il semble ne
pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les deux
versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel mais
il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco










Avatar
michdenis
Bonjour Coco74,

Si ta feuille est protégée avec la méthode proposée,

Tu peux par macro et ce sans toucher à la propriété "protection"
formater tes cellules comme ceci par exemple :

With Feuil2
.Range("A1").Interior.ColorIndex = 5
End With



Salutations!



"coco74" a écrit dans le message de news:
effectivement, ca marche !

Et pour rendre en plus accessible le formatage des cellules (comme dans
2003) ?
--
coco


"michdenis" wrote:

Bonjour Coco47,

En protégeant ta feuille comme ceci :
Le filtre automatique sera disponible seulement si les
boutons du filtre automatique sont déjà sur ta plage
de cellules avant de protéger ta feuille.

'-------------------------
Private Sub Workbook_Open()
With Feuil1
.Unprotect
.EnableAutoFilter = True
.Protect True, True, True, True, True
End With

End Sub
'-------------------------


Salutations!


"coco74" a écrit dans le message de news:
Merci MichDenis de ta réponse.

Je n'ai pas parlé de tri, mais de filtre ! !
J'ai trouvé une ecriture qui semble fonctionner pour les deux versions
d'excel :
F1.EnableAutoFilter = True

Mais ce que je n'arrive pas à faire c'est rendre accessible le formatage des
cellules dans une feuille protégée sous Excel 2000. (pour 2003, c'est :
AllowFormattingCells:=True)
As-tu une idée ?
--
coco



Bonjour Coco74,

Si tu protège ta feuille de cette manière, tu ne pourras pas trier
par les commandes du menu de la feuille de calcul, mais tu pourras
le faire par macros.... comme dans l'exemple suivant :

à inscrire dans le ThisWorkbook de ton classeur
'---------------------
Private Sub Workbook_Open()

With Feuil1
.Protect True, True, True, True, True
End With

End Sub
'---------------------

'-------------------
Sub tri()

With Range("Feuil1!A1:A15")
.Sort Key1:=Range("Feuil1!A1")
End With
End Sub
'-------------------


Salutations!




"coco74" a écrit dans le message de news:

Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme suit :

ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros, les
filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il semble ne
pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les deux
versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel mais
il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco










Avatar
Pascal ETIENNE
Bonjour, je m'imice, excusez moi.
Michdenis écrit protect true, true, true, true, true
pourquoi??
C'est peut-etre la question bète du jour, mais c'est ma question.
Merci.
Pascal



"michdenis" a écrit dans le message de
news:
Bonjour Coco47,

En protégeant ta feuille comme ceci :
Le filtre automatique sera disponible seulement si les
boutons du filtre automatique sont déjà sur ta plage
de cellules avant de protéger ta feuille.

'-------------------------
Private Sub Workbook_Open()
With Feuil1
.Unprotect
.EnableAutoFilter = True
.Protect True, True, True, True, True
End With

End Sub
'-------------------------


Salutations!


"coco74" a écrit dans le message de
news:

Merci MichDenis de ta réponse.

Je n'ai pas parlé de tri, mais de filtre ! !
J'ai trouvé une ecriture qui semble fonctionner pour les deux versions
d'excel :
F1.EnableAutoFilter = True

Mais ce que je n'arrive pas à faire c'est rendre accessible le formatage
des

cellules dans une feuille protégée sous Excel 2000. (pour 2003, c'est :
AllowFormattingCells:=True)
As-tu une idée ?
--
coco



Bonjour Coco74,

Si tu protège ta feuille de cette manière, tu ne pourras pas trier
par les commandes du menu de la feuille de calcul, mais tu pourras
le faire par macros.... comme dans l'exemple suivant :

à inscrire dans le ThisWorkbook de ton classeur
'---------------------
Private Sub Workbook_Open()

With Feuil1
.Protect True, True, True, True, True
End With

End Sub
'---------------------

'-------------------
Sub tri()

With Range("Feuil1!A1:A15")
.Sort Key1:=Range("Feuil1!A1")
End With
End Sub
'-------------------


Salutations!




"coco74" a écrit dans le message de
news:


Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme
suit :



ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros, les
filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il
semble ne


pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les
deux


versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel
mais


il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco









Avatar
michdenis
Bonjour Pascal,

expression.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly

La méthode Protect de l'objet Worksheet de toutes les versions d'excel (de 97 à 2003) ont
au moins ces paramètres en commun. D'autres options se sont ajoutées avec la venue
de la version Excel 2002.

Les valeurs par défaut de chacun des paramètres :
DrawingObjects:úlse
Contents:=True
Scenarios:=True
UserFaceOnly:úlse

En fait, la ligne de code permet d'affecter à tous ces paramètres sans exception
la valeur True
With Feuil1
.Protect , True, True, True, True
End With

J'aurais pu aussi écrire :
With Feuil1
.Protect , DrawingObjects:=True, , , UserInterfaceOnly:=True
End With

Il y avait aussi ceci :
With Feuil1
.Protect , DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
End With


P.S. Tu auras noté que dans ma réponse initiale, il y avait
un "True" de trop...soit celui avant la première virgule.
Cet endroit est pour affecter un mot de passe au besoin : Password:="toto"


Salutations!




"Pascal ETIENNE" a écrit dans le message de news:
Bonjour, je m'imice, excusez moi.
Michdenis écrit protect true, true, true, true, true
pourquoi??
C'est peut-etre la question bète du jour, mais c'est ma question.
Merci.
Pascal



"michdenis" a écrit dans le message de
news:
Bonjour Coco47,

En protégeant ta feuille comme ceci :
Le filtre automatique sera disponible seulement si les
boutons du filtre automatique sont déjà sur ta plage
de cellules avant de protéger ta feuille.

'-------------------------
Private Sub Workbook_Open()
With Feuil1
.Unprotect
.EnableAutoFilter = True
.Protect True, True, True, True, True
End With

End Sub
'-------------------------


Salutations!


"coco74" a écrit dans le message de
news:

Merci MichDenis de ta réponse.

Je n'ai pas parlé de tri, mais de filtre ! !
J'ai trouvé une ecriture qui semble fonctionner pour les deux versions
d'excel :
F1.EnableAutoFilter = True

Mais ce que je n'arrive pas à faire c'est rendre accessible le formatage
des

cellules dans une feuille protégée sous Excel 2000. (pour 2003, c'est :
AllowFormattingCells:=True)
As-tu une idée ?
--
coco



Bonjour Coco74,

Si tu protège ta feuille de cette manière, tu ne pourras pas trier
par les commandes du menu de la feuille de calcul, mais tu pourras
le faire par macros.... comme dans l'exemple suivant :

à inscrire dans le ThisWorkbook de ton classeur
'---------------------
Private Sub Workbook_Open()

With Feuil1
.Protect True, True, True, True, True
End With

End Sub
'---------------------

'-------------------
Sub tri()

With Range("Feuil1!A1:A15")
.Sort Key1:=Range("Feuil1!A1")
End With
End Sub
'-------------------


Salutations!




"coco74" a écrit dans le message de
news:


Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme
suit :



ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros, les
filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il
semble ne


pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les
deux


versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel
mais


il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco









Avatar
Pascal ETIENNE
OK, Merci b'coup.
Pascal

"michdenis" a écrit dans le message de
news:
Bonjour Pascal,

expression.Protect(Password, DrawingObjects, Contents, Scenarios,
UserInterfaceOnly


La méthode Protect de l'objet Worksheet de toutes les versions d'excel (de
97 à 2003) ont

au moins ces paramètres en commun. D'autres options se sont ajoutées avec
la venue

de la version Excel 2002.

Les valeurs par défaut de chacun des paramètres :
DrawingObjects:úlse
Contents:=True
Scenarios:=True
UserFaceOnly:úlse

En fait, la ligne de code permet d'affecter à tous ces paramètres sans
exception

la valeur True
With Feuil1
.Protect , True, True, True, True
End With

J'aurais pu aussi écrire :
With Feuil1
.Protect , DrawingObjects:=True, , , UserInterfaceOnly:=True
End With

Il y avait aussi ceci :
With Feuil1
.Protect , DrawingObjects:=True, Contents:=True, Scenarios:=True,
UserInterfaceOnly:=True

End With


P.S. Tu auras noté que dans ma réponse initiale, il y avait
un "True" de trop...soit celui avant la première virgule.
Cet endroit est pour affecter un mot de passe au besoin : Password:="toto"


Salutations!




"Pascal ETIENNE" a écrit dans le
message de news:

Bonjour, je m'imice, excusez moi.
Michdenis écrit protect true, true, true, true, true
pourquoi??
C'est peut-etre la question bète du jour, mais c'est ma question.
Merci.
Pascal



"michdenis" a écrit dans le message de
news:
Bonjour Coco47,

En protégeant ta feuille comme ceci :
Le filtre automatique sera disponible seulement si les
boutons du filtre automatique sont déjà sur ta plage
de cellules avant de protéger ta feuille.

'-------------------------
Private Sub Workbook_Open()
With Feuil1
.Unprotect
.EnableAutoFilter = True
.Protect True, True, True, True, True
End With

End Sub
'-------------------------


Salutations!


"coco74" a écrit dans le message de
news:

Merci MichDenis de ta réponse.

Je n'ai pas parlé de tri, mais de filtre ! !
J'ai trouvé une ecriture qui semble fonctionner pour les deux versions
d'excel :
F1.EnableAutoFilter = True

Mais ce que je n'arrive pas à faire c'est rendre accessible le formatage
des

cellules dans une feuille protégée sous Excel 2000. (pour 2003, c'est :
AllowFormattingCells:=True)
As-tu une idée ?
--
coco



Bonjour Coco74,

Si tu protège ta feuille de cette manière, tu ne pourras pas trier
par les commandes du menu de la feuille de calcul, mais tu pourras
le faire par macros.... comme dans l'exemple suivant :

à inscrire dans le ThisWorkbook de ton classeur
'---------------------
Private Sub Workbook_Open()

With Feuil1
.Protect True, True, True, True, True
End With

End Sub
'---------------------

'-------------------
Sub tri()

With Range("Feuil1!A1:A15")
.Sort Key1:=Range("Feuil1!A1")
End With
End Sub
'-------------------


Salutations!




"coco74" a écrit dans le message de
news:


Bonjour à tous,

L'enregistreur de macros me génère le code VBA sous Excel 2003 comme
suit :



ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=True,
Contents:=True, Scenarios:=True , AllowFormattingCells:=True,
AllowFiltering:=True

qui me permet de protéger une feuille tout en permettant les macros,
les



filtres et de formater les cellules.

Je cherche à rendre utilisable mon classeur sous Excel 2000. Or il
semble ne


pas accepter une partie du code !
Question : comment écrire ce code pour qu'il soit comptatible sur les
deux


versions.

PS: j'ai essayé de faire un If Then Else en testant la version d'Excel
mais


il me renvoie une erreur de compilation.

Merci de votre aide !
--
coco













1 2