VBA - calcule de l'onglet sélectionné avec dépendance des données en amont

Bonjour à tous,

Pour réduire le temps de calcul d'un fichier volumineux, je voudrais que la feuille sélectionné uniquement soit calculer ainsi que les onglets dépendants.

Dans le fichier Joint vous trouverez :

1) Dans le "ThisWorkBook" le code permettant de mettre le calcul en manuel à l'ouverture du fichier. Code Ok

Sub Workbook_open()
Calc = True
Application.Calculation = xlCalculationManual
End Sub

2) J'ai ajouté aux onglets "Base1" "Base2" et "Base3" un code interne "BD1" "BD2" et "BD3". Afin de pouvoir renommer l'onglet sans casser le code VBA de la fonction.

Les onglets BD'' contiennent les valeurs de Bases de Calculs. Les feuilles de résultat sont tributaires des ces onglets.

3) Dans les feuilles de résultat "Feuil1" "Feuil2" et "Feuil3", je voudrais qu'à la sélection de l'une de ces feuilles, que cette feuille se calcule automatiquement ainsi que les dépendances "BD1" "BD2" et "BD3" qui contiennent la source de calcul. Ici c'est juste une addition pour l'exemple.

Donc je voudrais à la sélection de la Feuil1 par exemple (ou 2 ou 3), que cette feuille calcul l'onglet BD1 puis BD2 puis BD3 et qu'enfin la feuille sélectionné passe en calcul automatique. Même si j'ajoute des conditions manuelles, que les modifications internes saisies se calcules comme si j'étais en mode calcul auto.
Et ne pas faire les autres calculs des X feuilles existantes.

Le code testé : Ko

Private Sub Worksheet_Activate()

'=== A la sélection de l'onglet actualise dans l'ordre la liste des onglets dépendants ===
' === Calcul des onglets source (Sheets....) et de l'onglet actif (ActiveSheet...)
If Calc = True Then
    BD1.Calculate
    BD2.Calculate
    BD3.Calculate
    ActiveSheet.Calculate

End If

End Sub

Donc si vous pouvez me dire où je me suis trompé ou ce que je fais mal, je suis preneur.
Le fichier exemple en PJ.

Excellente journée à tous.

Bonjour FranckO22

A ma connaissance, ce que vous souhaitez n'est pas faisable

Excel calcul tout ou rien mais pas juste feuille par feuille et heureusement

La seule solution éventuelle serait d'inscrire les formules oui de les supprimer en fonction de la feuille dans laquelle on se situe

A+

Bonjour Bruno,
Merci de ton retour.
Il doit bien y avoir une façon d'optimiser les calculs d'un classeur sans avoir besoin de tout calculer en permanence.
Je pense que je ne suis vraiment pas loin d'un résultat.
Mais merci de ton retour.

Salut Bruno,
Bon je confirme que l'option est possible. Ouf heureusement. Tu m'as fait peur Bruno.

Méthode Worksheet.Calculate (Excel)
Article
06/04/2022
2 minutes de lecture
1 contributeur

Cette méthode calcule tous les classeurs ouverts, une feuille de calcul particulière dans un classeur ou une plage de cellules déterminée dans une feuille de calcul, comme l'indique le tableau ci-dessous.

Syntaxe
expression. Calculer

expression Variable qui représente un objet Feuille de calcul.

Remarques :
Pour calculer Suivez cet exemple
tous les classeurs ouverts ==> Application.Calculate (ou juste Calculate)
une feuille de calcul particulière ==> Worksheets(1).Calculate
une plage déterminée ==> Worksheets(1).Rows(2).Calculate

Re,

Avez-vous essayez au moins

Je testerais de mon côté, je dormirais peut-être moins bêtes

Bonjour à tous, Bonjour Bruno,

====================================================================

Oui j'ai essayer et à plusieurs reprises, même si je ne suis pas un spécialiste de VBA.

Donc désoler si j'ai semblé un peu sec. Mais le faite qu'un modérateur interviennent dés le 1er message en indiquant que cela n'est pas possible, c'est vraiment frustrant, cela coupe immédiatement l'échange et c'est dommage il n'y a même pas communication, ni d'échange de point de vue ou d'approche de réflexion.

Qui interviendrait après l'intervention d'un modérateur de ton calibre. Bon allez

=====================================================================

Si la fonction ".Calculate " permet le calcul d'une feuille particulière ==> Worksheets(1).Calculate, il doit bien y avoir un truc à faire avec cette fonction.

Dans le fichier auquel je pense, il y a 1 onglet Paramétrage (Caché à l'utilisateur), 1 Onglet de Data Brute, 1 onglet de sélection dédié à l'utilisateur et une multitude d'onglets dédiés aux résultats.

Dans chacun des onglets résultats, l'utilisateur peut ajouter ou modifier les variables et avoir un résultat immédiat en mode calcul complet.

Chaque onglet résultats est autonome, ne dépendant que des 3 onglets (Param, Data, Sélection), qui ne nécessite qu'un calcul global une fois dans les onglets de résultats.

Il dois bien y avoir une possibilité pour réduire les temps de calculs et réduire les calculs à des zones ou onglets spécifiques.

Le pire c'est lorsqu'on ajoute ou lorsqu'on déplace une simple cellule, le temps de calcul se compte en minutes.

Ajouter un bouton de calcul perdrais le dynamisme des calculs auto. Donc je cherche autre chose.

Ou peut être que je réfléchi à l'envers et qu'il faudrait que je ne calcule pas. En rendant mon fichier en calcul auto et en ne calculant pas les autres onglets utilisateurs sauf celui actif.

Comment vous faites les pros d'Excel lorsque vous avez de grosse base de donnée pour réduire vos temps de calcul ? Bon Ok vous coder tous.

Mais vous avez bien des astuces pour fluidifier vos bases. (Et je ne parles pas des bonnes pratiques, de réduire la tailles des formules, de ne pas utiliser de rechercheX ou autres fonction consommatrice).

Merci pour vos partages d'expériences.

Excellente journée à tous.

Bonsoir,

Vous le prenez comme ça

Donc désoler si j'ai semblé un peu sec. Mais le faite qu'un modérateur interviennent dés le 1er message en indiquant que cela n'est pas possible, c'est vraiment frustrant, cela coupe immédiatement l'échange et c'est dommage il n'y a même pas communication, ni d'échange de point de vue ou d'approche de réflexion.

Vous êtes sérieux il serai peut-être bien de lire correctement les phrases

A ma connaissance, ce que vous souhaitez n'est pas faisable

Je ne suis pas la science infuse, loi de là (je ne l'ai jamais affirmer) et la preuve et pour moi ce n'était pas possible !
En tout cas je n'utilise pas Excel de cette manière très barbare avec d'énormes risque d'erreurs à mes yeux.. mais c'est votre problème, pas le mien

Une lenteur dans un fichier est souvent un problème d'optimisation et de méconnaissance des possibilités (TCD, Power Query, etc...)

Bref, bon courage

Rechercher des sujets similaires à "vba calcule onglet selectionne dependance donnees amont"