Aller au contenu

EXCEL : GERER MODE DE CALCUL


PHILPHIL

Messages recommandés

bonjour

 

comme beaucoup j'utilise LXL de patrick,

 

j'ai plus de 25000 cases a exporter dans un fichier excel.

 

hors celui ci est en mode de calcul "automatique" et ca me prend 1 heure a exporter

 

j'ai remarqué que en mode de calcul "manuel" ca prenait bcp moins de temps

 

en lisp, ou vlisp, est ce que l'on peut gerer EXCEL, pour qu'il se mette en mode de calcul "manuel" avant ecriture dans un fichier excel, puis le remettre en mode de calcul automatique avant fermeture ?

 

quelle sont les lignes de codes ? et ou les insérer dans un lisp ?

 

 

MERCI

 

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Le mode de calcul est géré au niveau de l'application et vaut pour tous les documents ouverts.

 

Pas testé (remplacer excelApp par la variable liée à l'application Excel).

 

(vlax-put excelApp 'Calculation -4105) ; xlCalculationAutomatic

ou

(vlax-put excelApp 'Calculation -4135) ; xlCalculationManual

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

hello Gile

 

je testerai ca mais vue mon niveau, ca m'avance pas plus

a moins de savoir ou tu trouves ce genre d'info que je potasse le sujet

 

en fait il faut que j'écrive les lignes telles quelles

apres le code d'ouverture du fichier

 

ca va m'etre encore plus difficile de modifier le lisp de Patrick LXL

 

 

merci

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas testé mais ça devrait se passer là.

 

Dans le fichier Lxl.lsp,

dans la routine 'lancer_excel' ligne 481, on désactive le mode de calcul automatique :

  (defun lancer_excel(/ sel)
   (setq xl  (vlax-get-or-create-object "Excel.Application"))
   (vlax-put xl 'Calculation -4135) ; xlCalculationManual
   (setq wks (vlax-get xl 'Workbooks))
   (vlax-for sel wks
     (setq liste_fichiers_ouvert (append liste_fichiers_ouvert (list (strcase (vlax-get sel 'fullname)))))
   )
 )

dans la routine 'fermer_excel' ligne 521, on réactive le mode calcul automatique :

  (defun fermer_excel(/ ok sel)
   (vlax-put xl 'Calculation -4105) ; xlCalculationAutomatic
   (if (not (member (strcase (vlax-get xls 'fullname)) liste_fichiers_ouvert))
     (vlax-invoke-method xls 'close :vlax-false)
   )
   (foreach sel (list xl wks xls classeur)
     (vlax-release-object sel)
   )
   (setq xl nil wks nil xls nil classeur nil)
   (gc)(gc)
 )

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

hello Gile

 

merci

 

j'ai ceci en retour

 

[b]Commande: LXL511
Microsoft Excel: Impossible de définir la propriété Calculation de la classe Application.[/b]

 

ou trouves tu ce genre de renseignements ?

un fichier HELP autodesk ? ou EXCEl ? sur le net ?

 

j'ai trouvé ca en cherchant sur le net

 

https://www.cadtutor.net/forum/topic/66334-modify-excel-options-using-autolisp/

 

donc j'ai rajouté cette ligne

 

(vlax-dump-object xl T)

 

;-------------------------------------------------------------------------
; Lancer une liaison avec Excel
;-------------------------------------------------------------------------

 (defun lancer_excel(/ sel)
   (setq xl  (vlax-get-or-create-object "Excel.Application"))
   
;;; debut modification 
(vlax-dump-object xl T)
(vlax-put-property xl 'Calculation -4135) ; xlCalculationManual
;;; fin modification 
   
   (setq wks (vlax-get xl 'Workbooks))
   (vlax-for sel wks
     (setq liste_fichiers_ouvert (append liste_fichiers_ouvert (list (strcase (vlax-get sel 'fullname)))))
   )
 )

 

et en réponse j'ai ca

Commande: LXL511

; _Application: nil

; Valeurs de propriétés:

; ActiveCell (RO) = nil

; ActiveChart (RO) = Une exception s’est produite

; ActiveEncryptionSession (RO) = -1

; ActivePrinter = "HP Universal Printing PCL 6 sur Ne07:"

; ActiveProtectedViewWindow (RO) = nil

; ActiveSheet (RO) = nil

; ActiveWindow (RO) = nil

; ActiveWorkbook (RO) = nil

; AddIns (RO) = #<VLA-OBJECT AddIns 0000018c8cfef268>

; AddIns2 (RO) = #<VLA-OBJECT AddIns2 0000018c8cfef2d8>

; AlertBeforeOverwriting = -1

; AltStartupPath = ""

; AlwaysUseClearType = -1

; Application (RO) = #<VLA-OBJECT _Application 000001847cc227f8>

; ArbitraryXMLSupportAvailable (RO) = -1

; AskToUpdateLinks = -1

; Assistance (RO) = #<VLA-OBJECT IAssistance 0000018c8cfeddd8>

; AutoCorrect (RO) = #<VLA-OBJECT AutoCorrect 0000018c8cfedf98>

; AutoFormatAsYouTypeReplaceHyperlinks = -1

; AutomationSecurity = 1

; AutoPercentEntry = -1

; AutoRecover (RO) = #<VLA-OBJECT AutoRecover 0000018c8cff0ed8>

; Build (RO) = 7237.0

; CalculateBeforeSave = -2146826246

; Calculation = -2146826246

; CalculationInterruptKey = 2

; CalculationState (RO) = 0

; CalculationVersion (RO) = 145621

; Caller (RO) = ...Contenu indexé masqué...

; CanPlaySounds (RO) = -1

; CanRecordSounds (RO) = 0

; Caption = "Microsoft Excel"

; CellDragAndDrop = -1

; Cells (RO) = Une exception s’est produite

; Charts (RO) = Une exception s’est produite

; ClipboardFormats (RO) = ...Contenu indexé masqué...

; ClusterConnector = ""

; Columns (RO) = Une exception s’est produite

; COMAddIns (RO) = #<VLA-OBJECT COMAddIns 000001845338cb88>

; CommandBars (RO) = #<VLA-OBJECT _CommandBars 0000018c8cff0308>

; CommandUnderlines = -4105

; ConstrainNumeric = 0

; ControlCharacters = 0.0

; CopyObjectsWithCells = -1

; Creator (RO) = 1480803660

; Cursor = -4143

; CursorMovement = 1.0

; CustomListCount (RO) = 4.0

; CutCopyMode = 0

; DataEntryMode = -4146

; DDEAppReturnCode (RO) = 0.0

; DecimalSeparator = ","

 

 

et ca a l fin

 

Méthodes prises en charge:

; ActivateMicrosoftApp (1)

; AddCustomList (2)

; Calculate ()

; CalculateFull ()

; CalculateFullRebuild ()

; CalculateUntilAsyncQueriesDone ()

; CentimetersToPoints (1)

; CheckAbort (1)

; CheckSpelling (3)

; ConvertFormula (5)

; DDEExecute (2)

; DDEInitiate (2)

; DDEPoke (3)

; DDERequest (2)

; DDETerminate (1)

; DeleteCustomList (1)

; DisplayXMLSourcePane (1)

; DoubleClick ()

; Evaluate (1)

; ExecuteExcel4Macro (1)

; FindFile ()

; GetCustomListContents (1)

; GetCustomListNum (1)

; GetOpenFilename (5)

; GetPhonetic (1)

; GetSaveAsFilename (5)

; Goto (2)

; Help (2)

; InchesToPoints (1)

; InputBox (8)

; Intersect (30)

; MacroOptions (11)

; MailLogoff ()

; MailLogon (3)

; NextLetter ()

; OnKey (2)

; OnRepeat (2)

; OnTime (4)

; OnUndo (2)

; Quit ()

; RecordMacro (2)

; RegisterXLL (1)

; Repeat ()

; Run (31)

; SaveWorkspace (1)

; SendKeys (2)

; SharePointVersion (1)

; Undo ()

; Union (30)

; Volatile (1)

; Wait (1)

; _Evaluate Microsoft Excel: Impossible de définir la propriété Calculation de la classe Application.(1)

; _Run2 (31)

 

 

et si ce sont les caractéristique de EXCEL 2010 au moment au le programme l'ouvre

je suis loin des -4135 ou -4105

; Calculation = -2146826246

 

 

bizarre non ?

 

 

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

J'ai cherché sur le net principalement dans la documentation du VBA Excel :

Application.Calculation

XlCalculation énumération

 

Après, je n'en sais pas beaucoup plus, la programmation Excel n'est vraiment pas mon fort, j'en fais quand j'y suis obligé mais j'essaye d'éviter.

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

hello

 

d'accord Gile

 

j'ai essayé ca aussi, sans succes

 

si j'ai bien compris, le mode de calcul "manuel" "automatique" est lier au fichier lui meme et non pas a excel

 

il faut donc ouvrir le fichier, puis ensuite dire a excel d'etre en "manuel" remplir les cases, dire a exel de repasser en automatique, puis fermer le fichier( le mode "automatique" etant sauvegardé dans le fichier )

 

ca semble logique ?

 

Merci gile, je vais poursuivre mes recherches

 

;-------------------------------------------------------------------------
; Lancer une liaison avec Excel
;-------------------------------------------------------------------------

 (defun lancer_excel(/ sel)
   (setq xl  (vlax-get-or-create-object "Excel.Application"))
   
;;; debut modification 
;;(vlax-dump-object xl T)
;;;(vlax-put xl 'Calculation -4135) ; xlCalculationManual
;;; fin modification 
   
   (setq wks (vlax-get xl 'Workbooks))
   (vlax-for sel wks
      (progn
     (setq liste_fichiers_ouvert (append liste_fichiers_ouvert (list (strcase (vlax-get sel 'fullname)))))
     (vlax-put-property xl 'Calculation -4135) ; xlCalculationManual
;;;
     )
   )
 )

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité