[R] Fermeture d'un Book exel sans le sauvegarder et desactiver la boite de dialog

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Nyco
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 09 juin 2022 15:44
Status : Hors ligne

[R] Fermeture d'un Book exel sans le sauvegarder et desactiver la boite de dialog

#1

Message par Nyco »

Bonjour à tous,
je suis en train de faire un script qui parcoure une liste de fichier excel, il les ouvre, défini une zone d'impression, les exporte en PDF puis les ferme.
Mon problème est le suivant :lorsque j'ouvre un fichier en lecture seule ou que je souhaite le fermer sans enregistrer, la boite de dialogue suivante " Voulez-vous enregistrer les modifications .... " s'affiche automatiquement. Cette boite de dialogue empêche l'éxcécution de la fin du code. Est il possible de s'affranchir de cette boite de dialogue ?

je vous remercie de l'attention portée a mon problème.

Code : Tout sélectionner

 Func _xls2pdf($Destination,$Repertoire,$Non,$source,$Ecraser)
	;	Argument 1 chemain generale de destination
	;	Argument 2 dosier de destination
	;	Argument 3 non du fichier
	; 	Argument 4 fichier a convertir
	;	Argument 5 comportement ci le pdf existe deja 1 ecrase 0 passe

	Local Const $PaperA4 = 9, $Portrait = 1
	Local Const $PrintZonne = "$A$1:$Q$54"
	Local const $pdf = ".pdf"

	If not FileExists($Destination & $Repertoire) Then
		If Not DirCreate ( $Destination & $Repertoire) Then Return ("Impossible de crer le repertoire" & $Repertoire )
	EndIf


	If FileExists($Destination & $Repertoire & "\" & $Non & ".pdf") Then
		If $Ecraser Then
			if FileDelete($Destination & $Repertoire & "\" & $Non & ".pdf") then
			Else
				Return ("Impossible de suprimer le fichier" & $Destination & $Repertoire & "\" & $Non & ".pdf")
			EndIf
		Else
			Return ("Le fichier " & $Destination & $Repertoire & "\" & $Non & ".pdf existe deja")
		EndIf
	EndIf

	Local $oAppl=_Excel_Open(True);False rans le claseur visible
	If @error Then Return("L'objet excel necessaire a la convertion en pdf n'as pas pu etre crée!")

	Local $oWorkbook2 = _Excel_BookOpen($oAppl, $source, True) ; True ouvre le classeur en lecture seul problème lore de la fermeture propose d'enregistrer
	If @error Then Return ("Impossible d'ouvrir le fichier; " & $source)



	Local $aSheets = _Excel_SheetList($oWorkbook2)
	If @error then Return ("Erreur lors de l'énumération des feuilles")

	For $i = 0 To UBound($aSheets) - 1
		 If $aSheets[$i][1].Visible <> $xlSheetVisible Then ContinueLoop
		 $oAppl.PrintCommunication = False
		 $aSheets[$i][1].PageSetup.PaperSize = $PaperA4
		 $aSheets[$i][1].PageSetup.Orientation = $Portrait
		 $aSheets[$i][1].PageSetup.FitToPagesWide = 1
		 $aSheets[$i][1].PageSetup.FitToPagesTall = 1
		 $aSheets[$i][1].PageSetup.PrintArea = $PrintZonne
		 If @error Then Return ("Erreur de configuration de la mise en page" & @CRLF & "@error = " & @error & ", @extended = " & @extended & @CRLF)
	Next

	_Excel_Export($oAppl, $oWorkbook2, $Destination  & $Repertoire & "\" & $Non & $pdf, Default, Default, False, Default, Default,  False)
	_Excel_BookClose ($oWorkbook2,False)
	_Excel_Close($oAppl)

	If @error Then Return("Erreur de sauvegarde pdf: " & $Non & ".pdf" & @CRLF & "@error = " & @error & ", @extended = " & @extended & @CRLF)

	Return True
EndFunc
Modifié en dernier par Nyco le lun. 13 juin 2022 10:31, modifié 1 fois.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2037
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Fermeture d'un Book exel sans le sauvegarder et desactiver la boite de dialog

#2

Message par TommyDDR »

Regardez le 2eme paramètre de
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 988
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Fermeture d'un Book exel sans le sauvegarder et desactiver la boite de dialog

#3

Message par walkson »

Bonjour,
Comme ceci

Code : Tout sélectionner

#include <Excel.au3>

Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookNew($oExcel)
_Excel_RangeWrite($oWorkbook, Default, "Test" )
$oExcel.ActiveWorkbook.Saved = True
MsgBox(0,"","pour vérifier")
_Excel_Close($oExcel)

[Edit] Mais la méthode de TommyDDR est la meilleure :D
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6217
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Fermeture d'un Book exel sans le sauvegarder et desactiver la boite de dialog

#4

Message par mikell »

Le 2ème paramètre de _Excel_Open est False par défaut (supprime toutes les invites, etc) , et Nyco ne l'utilise pas dans son script, donc j'imagine que c'est insuffisant :wink:

Je verrais assez une solution à base de WinWaitActive (avec timeout) et WinClose, c'est assez barbare mais ça marche bien :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Nyco
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 09 juin 2022 15:44
Status : Hors ligne

Re: Fermeture d'un Book exel sans le sauvegarder et desactiver la boite de dialog

#5

Message par Nyco »

Bonjour,
En premier lieu je tiens à vous présenter mes excuses pour mon délai de réponse je m'attendais recevoir un e-mail si le sujet avait une réponse mais ce n'est pas le cas.

Effectivement la solution de Walkson avec :
$oExcel.ActiveWorkbook.Saved = True
Fonctionne parfaitement pour ce que je souhaite faire.

Mikell j'étais parti sur une solution semblable à la tienne en exécutant un exécutable contenant sensiblement ton code, proposé, cela fonctionnait quand je lançais la fonction manuellement mais quand je la lance depuis mon script principal l'exécutable ne démarrait pas. J'étais passé par un exécutable car quand je lance la commande fermée je ne peux pas avancer dans le script. Je lançais donc mon exécutable puis la commande fermée afin d'avoir de script qui tournent simultanément.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 988
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [R] Fermeture d'un Book exel sans le sauvegarder et desactiver la boite de dialog

#6

Message par walkson »

J'avais oublié que
_Excel_BookClose($oWorkbook1, False) et
_Excel_Close($oExcel1,False,True) ferme Excel sans demander une sauvegarde
_Excel_BookClose() peut être intéressant dans votre cas, cela évite de relancer Excel à chaque ouverture de classeur
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2037
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Fermeture d'un Book exel sans le sauvegarder et desactiver la boite de dialog

#7

Message par TommyDDR »

My bad, en effet, je suis allé trop vite en besogne !
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre