Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1642 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  au secours

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

au secours

n°1372825
elgobi
Posté le 23-05-2006 à 09:52:01  profilanswer
 

Bonjour,  
Je souhaite bloquer les calculs sur une plage de cellule et laisser le reste de ma feuille en calcul automatique (il y a des macros sur cette plage qui mettent beaucoup de temps à tourner et qui sont indépendantes du reste de la feuille mais pour l'instant dès que je fais une opération sur le reste de la feuille toutes les macros de la plage en question sont relancées) Existe-t-il une fonction (ou une astuce) qui permette de faire ça (je voudrais par exemple créer un bouton qui débloque la plage quand j'en ai besoin)?  
Merci d'avance parce que là je galère un peu et il ne me reste plus beaucoup de temps (la fin de mon stage arrive).  
 

mood
Publicité
Posté le 23-05-2006 à 09:52:01  profilanswer
 

n°1372849
elgobi
Posté le 23-05-2006 à 10:24:48  profilanswer
 

siouplait!!!
je m'en sors pas j'ai une 50aine de cas à faire tourner et ça me prend à chaque fois 4min à cause des macro qui tournent pour rien.

n°1372866
kiki29
Posté le 23-05-2006 à 10:38:42  profilanswer
 

Au clic sur ton bouton
           Application.Calculation = xlAutomatic
 
dans une procedure Auto_Open  
           Application.Calculation = xlManual
 
comme cela elle rebasculera en manuel à l'ouverture de ton classeur
 
ou alors un 2eme bouton
           Application.Calculation = xlManual


Message édité par kiki29 le 23-05-2006 à 10:49:39
n°1372924
elgobi
Posté le 23-05-2006 à 10:59:50  profilanswer
 

merci  
est-ce que tu peux me donner la syntaxe pour que application.calculation ne s'applique qu'à une plage (que j'ai nommé "maplage" )
PS: 29=finistère?

n°1372934
elgobi
Posté le 23-05-2006 à 11:04:44  profilanswer
 

ça marche comment auto_open?
je suis désolée , je suis pas très douée mais ça fait pas longtemps que je me suis mise à la prog alors au début c'est pas évident :)

n°1372953
kiki29
Posté le 23-05-2006 à 11:16:52  profilanswer
 

dans un Module tu place une procédure Auto_Open
sub Auto_Open()
    Application.Calculation = xlManual  
end sub
  Sachant qu'Excel recherche de lui même à l'ouverture d'un classeur des macros portant ce nom, cela te permet d'exécuter tout ce qui s'y trouve avant de te donner la main
Par exemple tu peux sélectionner ta feuille de démarrage, repositionner
en haut à gauche dans cette feuille la cellule active, remettre en place les boutons etc....
 
Voir code dans http://forum.hardware.fr/hardwaref [...] 0232-1.htm
 
un oubli à tester Range(“$a$3:$Z$9”).Calculate


Message édité par kiki29 le 23-05-2006 à 11:21:30
n°1372965
elgobi
Posté le 23-05-2006 à 11:27:40  profilanswer
 

merci beaucoup j'essaye ça tout de suite

n°1372972
elgobi
Posté le 23-05-2006 à 11:36:03  profilanswer
 

ça marche mais comment je fais pour que application.calculation.xlmanual ne s'applique qu'à une plage? ex (A1:B8)
 
J'ai essayé ça mais ça marche pas toute ma feuille est bloquée quand j'ouvre le classeur:
 
Private Sub Auto_open()
Range("A1:B8" ).Select
Application.Calculation = xlManual
End Sub

n°1372989
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-05-2006 à 11:46:30  profilanswer
 

http://forum.hardware.fr/hardwaref [...] m#t1372959
 
Ca marche que sous Excel 2003, il faut apparement adapter pour les autres versions.
Par contre, en remplaçant le "SelectionChange" par "Change", tu peux détecter quand la feuille de calcul est modifiée.
Donc tu peux relancer un Calculate() sur toutes les cellules calculées qui sont en dehors de la zone à ne pas calculer automatiquement.

n°1373024
elgobi
Posté le 23-05-2006 à 12:02:29  profilanswer
 

euh j'ai regardé mais je comprends pas trop enfait moi ce que je voudrais c'est que Application.Calculation = xlManual ne s'applique qu'à range("A1:B8" ) alors que avec:
     Private Sub Auto_open()  
     Application.Calculation = xlManual  
     End Sub
Je bloque toute ma feuille en calcul manuel

mood
Publicité
Posté le 23-05-2006 à 12:02:29  profilanswer
 

n°1373026
kiki29
Posté le 23-05-2006 à 12:06:02  profilanswer
 

Range(“$A$1:$B$8”).Calculate ?

n°1373028
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-05-2006 à 12:06:49  profilanswer
 

Tu ne peux pas faire appliquer Application.Calculation qu'à une cellule.
 
Et les objets Range et Cell n'ont pas cette option.
 
Donc à partir de là, il faut l'émuler.
C'est ce que je te propose de faire en mettant xlManual à toute ton application, et OnChange de tes sheets, lancer le Calculate() de toutes les cellules qui sont en dehors de ton range, pour simuler le "xlAutomatic" sur les autres cellules.
 
Autre solution : tu vires la formule sur ces cellules.
Tu fais un bouton "Calculer".
Il lance une macro qui met la formule dans ces cellules.
Puis force la valeur avec la valeur courante
(Cell.Value = Cell.Value2)

n°1373033
elgobi
Posté le 23-05-2006 à 12:10:09  profilanswer
 

ok j'essaye merci encore

n°1373036
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-05-2006 à 12:11:18  profilanswer
 

Tu fais un bouton "CommandButton1", puis dans ton code :

Code :
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Cells(4, 1).Value2 = "=sum(R1C1:R3C1)"
  4.     Cells(4, 1).Value = Cells(4, 1).Value2
  5. End Sub

n°1373037
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-05-2006 à 12:11:39  profilanswer
 

Je viens de tester, ça marche : j'ai bien le résultat de ma formule dans la cellule A4, mais si je change une des valeurs ensuite, ça ne met pas à jour la valeur tant que je ne clique pas sur le bouton.


Message édité par Arjuna le 23-05-2006 à 12:12:29
n°1373038
kiki29
Posté le 23-05-2006 à 12:13:25  profilanswer
 

Explorateur d'objets Range.Calculate

n°1373041
elgobi
Posté le 23-05-2006 à 12:14:09  profilanswer
 

euh justement pour lancer le calculate() de toutes les cellules en dehors de mon range je fais comment ? il existe une fonction qui me donnerai le complémentaire de "A1:B8"  
Parce que justement il faut surtout pas qu'à un changement dans ma feuille les calcul dans mon range maudit ("A1:B8" )soit lancés sinon c'est parti pour 4 min.

n°1373044
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-05-2006 à 12:16:32  profilanswer
 

Utilise plutôt ma seconde méthode : plus simple, plus efficace, et surtout, code qui n'empêchera pas les autres sheets de travailler normalement.
 
En plus le code est simplissime : t'as juste à modifier la formule avec celle qui est actuellement dans ta sheet (n'oublie pas de changer les références de type "A1" en "R1C1" par contre, c'est plus facile à bidouiller depuis la macro pour les évolutions futures).
 
Ensuite, dans ta sheet, tu vires les formules des-dites cellules qui mettent du temps à calculer, et c'est terminé.


Message édité par Arjuna le 23-05-2006 à 12:19:04
n°1373083
elgobi
Posté le 23-05-2006 à 12:46:52  profilanswer
 

c'est pas vraiment faisable parce que ma plage contient 600 lignes et les formules qui y sont attachées sont des fonctions (que j'ai passé 3 plombes à faire) qui font intervenir des données extérieures à la plage donc ce serait beaucoup trop lourd merci quand même.
Mais j'en revient pas que ce ne soit pas possible de bloquer une plage de cellules en calcul manual tout en laissant le reste de la feuille en calcul automatique...
Si par contre quelqu'un connaissait une façon d'obtenir le complémentaire d'une plage de cellules j'arriverai peut être à bidouiller quelque chose merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  au secours

 

Sujets relatifs
Ouvrir Port C/C++ [AU SECOURS !]Pulbot ou la complexité des requêtes... Ô secours...
< > ' " , ; en PHP suis PERDU ----> AU SECOURS !au secours!!!!!
au secours, je veux plus de frameset !!!Cookies, pb headers !!
Insertion video dans une page web -- Au secours je pete un cable! :(AU SECOURS register global et session
Je comprend pas, au secours[Perl] Problème de de print dans une chaine!!
Plus de sujets relatifs à : au secours


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR