Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ordre de calculer une zone

5 réponses
Avatar
Ceno
Bonjour =E0 tous,

J'ai un fichier ou une des feuilles et pleine de formule, jusqu'=E0 la
ligne 65000, avec un sommeprod de plusieurs crit=E8res, du coup malgr=E9
un bon ordi c'est environ une demi heure de calcul.

Est-il possible de demander un calcule que sur les autres feuilles et
une partie seulement de celle-ci ?

Est-il possible que ma s=E9lection du calcule soit faite en fonction du
r=E9sultat de la premi=E8re colonne de ma page, en claire je demande le
calcule de la premi=E8re colonne puis pour chaque ligne en fonction du
r=E9sultat, je calcule ou non la suite de la ligne ?

Par avance merci.

5 réponses

Avatar
Philippe.R
Bonjour,
Supposons nommée Zaza la plage à calculer ; en ayant réglé le calcul à "sur
ordre" dans l'onglet calcul de outils / options, l'instruction VBA :
range("Zaza").calculate
devrait pouvoir faire l'affaire en étant placée dans la procédure change du
module de la feuille concernée
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Ceno" a écrit dans le message de
news:
Bonjour à tous,

J'ai un fichier ou une des feuilles et pleine de formule, jusqu'à la
ligne 65000, avec un sommeprod de plusieurs critères, du coup malgré
un bon ordi c'est environ une demi heure de calcul.

Est-il possible de demander un calcule que sur les autres feuilles et
une partie seulement de celle-ci ?

Est-il possible que ma sélection du calcule soit faite en fonction du
résultat de la première colonne de ma page, en claire je demande le
calcule de la première colonne puis pour chaque ligne en fonction du
résultat, je calcule ou non la suite de la ligne ?

Par avance merci.
Avatar
Ceno
Merci Philippe pour ta réponse, aurais-tu une astuce pour dire si A1=1
alors calculer la zone zaza, sinon dir si A12=1 calculer la zone
zaza2...... jusqu'a A65000

Par avance merci
Avatar
Philippe.R
Bonjour,
Tu pourrais passer le nom de la plage en variable (chaque plage ayant été
nommée dans la feuille) et renseigner ladite variable en fonction de la
réalisation de ta condition

dim maZaza as string

test sur la condition permettant d'affecter à maZaza soit zaza1, zaza2,...

range(maZaza).calculate

Pour pouvoir te proposer un test sur la réalisation de la condition, il
faudrait comprendre le raisonnement et ce qui se passe en colonne A

toutes les cellules de la colonne A peuvent elles répondre à la condition ?
plusieurs cellules de la colonne peuvent elles répondre simultanément à la
condition (=1 si j'ai bien suivi) ?
si oui quelle priorité entre elles (1ère en partant du haut...) ?
ou bien action particulière si plusieurs simultanément ?
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Ceno" a écrit dans le message de
news:
Merci Philippe pour ta réponse, aurais-tu une astuce pour dire si A1=1
alors calculer la zone zaza, sinon dir si A12=1 calculer la zone
zaza2...... jusqu'a A65000

Par avance merci
Avatar
Ceno
Bonjour Philippe et encore merci,

En fait, j ai des paquets de 12 lignes environs, et dans la première
de chaque paquet, il y a un nom, qui se reporte d un' autre feuille,
mais il y en a jamais le même nombre, alors je voudrais calculer que
les paquets ou il y a un nom en première ligne, donc en colonne A il y
a un test : si il y a un nom en B1 alors A1=1 sinon 0.

Alors je voudrais calculer de B1 à la dernière ligne du dernier paquet
ou il y a un nom. donc jusqu'au dernier 1 de la colonne A + les 12
lignes qui suivent.

J espère que je suis compréhensible.
Avatar
Philippe.R
Bonjour,
Si j'ai bien compris, on faire comme suit ; le classeur étant en calcul sur
ordre, dans le module de la feuille concernée :

Private Sub Worksheet_Change(ByVal Target As Range)
Range("a:a").Calculate
Nomme_et_calcule
End Sub

dans un module ordinaire :

Sub Nomme_et_calcule()
'MPFE le 30/11/2008
'La colonne G est utilisée comme colonne de contrôle
' de l'étendue de la plage
Dim i As Long, mAlig As Long, deRliG As Long
'on passe l'erreur générée si le nom n'existe pas
On Error Resume Next
ActiveWorkbook.Names("zaza").Delete
'on définit la dernière ligne
deRliG = Range("a65536").End(xlUp).Row
'on suspend les évènements avant effacement de la
' plage de contrôle
Application.EnableEvents = False
Range("G1:G" & deRliG).Value = ""
'on recherche le dernier 1 en colonne A
For i = deRliG To 1 Step -1
If Cells(i, 1).Value = 1 Then
mAlig = i + 11
Exit For
End If
Next i
'on définit la plage nommée
ActiveWorkbook.Names.Add Name:="zaza", RefersTo:= _
"þuil1!C1:F" & mAlig
'on calcule la plage
Range("zaza").Calculate
Range("G1:G" & mAlig).Value = "a"
Application.EnableEvents = True
End Sub

un petit fichier exemple :
http://www.cijoint.fr/cjlink.php?file=cj200811/cijxhXgSRm.xls
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Ceno" a écrit dans le message de
news:
Bonjour Philippe et encore merci,

En fait, j ai des paquets de 12 lignes environs, et dans la première
de chaque paquet, il y a un nom, qui se reporte d un' autre feuille,
mais il y en a jamais le même nombre, alors je voudrais calculer que
les paquets ou il y a un nom en première ligne, donc en colonne A il y
a un test : si il y a un nom en B1 alors A1=1 sinon 0.

Alors je voudrais calculer de B1 à la dernière ligne du dernier paquet
ou il y a un nom. donc jusqu'au dernier 1 de la colonne A + les 12
lignes qui suivent.

J espère que je suis compréhensible.