Worksheet_Change ou Worsheet_Calculate ?
Bonjour à tous,
J'ai créé avec l'aide de certain actifs du forum une table de calcul que vous trouverez ci-dessous.
Elle fonctionne très bien sauf que c'était une table test pour déploiement dans un gros fichier de calcul. Et je me retrouve avec un soucis évidement
Sur la table de test, toutes les données sont sur la page 1 donc un Worksheet_Change fonctionne bien. Mais dans mon fichier de calcul final, les Range D1/E1/F1 seront dans une feuille séparée des Range A1 et A2 (Matière et Epaisseur_Commande), en gros j'aurai 100 feuilles de calculs et le but est que les température soient rentrées dans une feuille de données initiales, donc sur chaque feuille de calcul je viens récupérer les température de la Feuil1.
Forcément le Worksheet_Change ne fonctionne car les cellules de température changent de valeur uniquement, et je me galère un peu avec le Worksheet_Calculate et les conditions que je dois y appliquer pour qu'il fasse comme avant. Alors je me tourne vers vous. Merci.
J'ai cru trouver une solution mais...
J'ai voulu appliquer un WorkSheet_Change sur la Feuil1 qui va venir changer les valeurs sur les autres feuilles. Mais ça tourne en boucle avant de crasher. Voici mon code test dans le module de feuill1, qui s'applique à la première feuille de calcul (Calcul_01).
J'ai l'impression qu'il y a un soucis avec le fait que dans les deux feuilles [T_Ambiante] existe et qu'il prend pas en compte le fait que j'active la feuille de calcul pour mettre à jour.
Option Explicit
Sub Worksheet_Change(ByVal Target As Range)
'Déclaration des variables
Dim WS As Object
Dim Ta As String
Dim Ts As String
Dim Te As String
'Résumé.Activate
If Not Application.Intersect([T_Ambiante], Range(Target.Address)) Is Nothing Then
Ta = [T_Ambiante]
MsgBox Ta
Calcul_01.Activate
[T_Ambiante] = Ta
MsgBox "OK"
End If
End SubC'est fou ce qu'on peut réfléchir facilement quand on s'isole du bruit ambiant d'un open space. Code corrigé et fonctionnel, plus qu'a développer pour les autres valeurs.
Sub Worksheet_Change(ByVal Target As Range)
'Déclaration des variables
Dim WS As Object
Dim Ta As String
Dim Ts As String
Dim Te As String
'Résumé.Activate
If Not Application.Intersect([T_Ambiante], Range(Target.Address)) Is Nothing Then
Ta = [T_Ambiante]
For Each WS In Worksheets
If Left(WS.CodeName, 6) = "Calcul" Then
WS.Activate
If WS.[T_Ambiante] = Ta
End If
Next WS
End If
End Sub