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.

7test-tables.xlsm (93.90 Ko)

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 Sub

C'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
Rechercher des sujets similaires à "worksheet change worsheet calculate"