Proteger une feuille Excel

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Yle
Niveau 5
Niveau 5
Messages : 167
Enregistré le : mar. 21 avr. 2009 17:22
Localisation : La NORMANDIE -76
Status : Hors ligne

Proteger une feuille Excel  

#1

Message par Yle »

Bonsoir,

Voici un petit programme lorsque je crée un fichier Excel :

Code : Tout sélectionner

[code_au3]#include <Array.au3>
#include <EditConstants.au3>
#include <ExcelCOM_UDF.au3>

#include <File.au3>
#include <WindowsConstants.au3>
$oXl=ObjCreate("excel.Application")											; EXCEL
$oXL.ScreenUpdating = true
$oXL.Visible = False

$oXL.workbooks.add
$oXl.ActiveSheet.PageSetup.Orientation = $xlLandscape
$oXl.ActiveSheet.PageSetup.PaperSize = $xlPaperA4

_ExcelWriteCell($oXL, " BONJOUR ", 1, 1)
with $oXL.ActiveSheet
	.Protect = ("TESTTEST")
	.DrawingObjects=True
	.Contents=True
	.Scenarios=True
EndWith
_ExcelBookSaveAs($oXL, @ScriptDir & "\TEST_Protect.xls", 0, 1)
_ExcelBookClose($oXL) ; And finally we close out
$oXL.quit

[/code_au3]
Je veux donc protéger ma feuille, la protection apparemment se fait car quand je clique sur une cellule, j'ai le message "Oter la protection..."
Je clique sur Révision/ôter la protection de la feuille mais mon mot de passe n'est pas demandé ?
QQ a une idée ?
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Proteger une feuille Excel

#2

Message par walkson »

Bonjour,
Difficile de vous répondre avec #include <ExcelCOM_UDF.au3> (2006)
A notre époque, nous avons: #include <Excel.au3>
$oXL.ActiveSheet.Protect("AAA") semble fonctionner :mrgreen:
$oXL.ActiveSheet.Protect("AAA",False,True,False,True,True,True,True,True,True,True,True,True,True,True,True) pour tout protéger et
$oXl.ActiveSheet.Unprotect ("AAA") l'inverse
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Yle
Niveau 5
Niveau 5
Messages : 167
Enregistré le : mar. 21 avr. 2009 17:22
Localisation : La NORMANDIE -76
Status : Hors ligne

Re: Proteger une feuille Excel

#3

Message par Yle »

Bonsoir,

Je me suis mis au goût du jour et mis l'include : Excel3
Visiblement j'ai une erreur avec votre syntaxe sur le protect
La solution serait ceci :
#include <Excel.au3>

$oXl=ObjCreate("excel.Application")                               ; EXCEL
$oXL.ScreenUpdating = true
$oXL.Visible = False

;$oXL.workbooks.add
;~ $oXl.ActiveSheet.PageSetup.Orientation = $xlLandscape
;~ $oXl.ActiveSheet.PageSetup.PaperSize = $xlPaperA4

$oXL.ActiveSheet.Protect = "AAA"
;$oXL.DisplayAlerts = False                        ; evite la question -fichier existe dejà ?
_Excel_BookSaveAs ($oXl,@ScriptDir & "\Test_Protect.xlsx")
_Excel_Close($oXL)
$oXL.Quit
 
Avec ce code, pas d'erreur de syntaxe mais je ne retrouve pas mon fichier Test_Protect.xlsx sur mon répertoire courant ?
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Proteger une feuille Excel

#4

Message par walkson »

J'ai fait le test sous office 2013 et ça marche (pour moi)
J'ai déverrouillé A1 , verrouillé la Feuil active puis écrit dans A1
#include <Excel.au3>
$oXl = _Excel_Open(False)                                                                                    ; EXCEL
;$oXL.ScreenUpdating = true
;$oXL.Visible = True
If FileExists(@ScriptDir & "\Test_Protect.xlsx") Then
   $oXX = _Excel_BookOpen($oXl,  @ScriptDir & "\Test_Protect.xlsx")
   _Excel_SheetAdd($oXX,Default,False,1)
   $oXl.ActiveSheet.Unprotect ("AAA")
Else
   $oXX = $oXL.workbooks.add
EndIf

$oXl.ActiveSheet.Range("A1").Locked = False
$oXl.ActiveSheet.Protect("AAA")
$oXl.ActiveSheet.Range("A1").Value = "AAAAAA"
;$oXL.DisplayAlerts = False                                                             ; evite la question -fichier existe dejà ?
If FileExists(@ScriptDir & "\Test_Protect.xlsx") Then
   _Excel_BookSave ( $oXX)
Else
   _Excel_BookSaveAs($oXX ,@ScriptDir & "\Test_Protect.xlsx")
EndIf
_Excel_Close($oXL)
;$oXL.Quit
je ne retrouve pas mon fichier Test_Protect.xlsx sur mon répertoire courant ?
il faut _Excel_BookSaveAs($oXX ,@ScriptDir & "\Test_Protect.xlsx") et la variante est $oXX et non de $oXL de ObjCreate("excel.Application")
Le fichier Excel a du aboutir dans "mes documents" style "Classeur1.xlsx"
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Yle
Niveau 5
Niveau 5
Messages : 167
Enregistré le : mar. 21 avr. 2009 17:22
Localisation : La NORMANDIE -76
Status : Hors ligne

Re: Proteger une feuille Excel

#5

Message par Yle »

Suis en Excel 2016 et çà fonctionne aussi.
Merci surtout pour ma grosse erreur entre $oXL et $oXX mais c'est dommage que l'interpréteur ne voit pas cette bourde !
Répondre