Mise a jour de l'heure

Bonjour à tous,

Le cadre : 4 feuilles nommées cuve 1, cuve 2, cuve 3 et ouverture cuve.

Dans les trois premières feuilles (cuve 1,2,3) j'ai inséré la fonction aujourd'hui et maintenant. Le problème est que je veux que cela se mette à jour uniquement si on modifie la feuille ; en ce moment si on modifie n'importe quelle feuille la date et heure se mettent à jour sur les 3 feuilles en même temps.

Si vous êtes bon j'aurais une autre colle !

Banzaï

23calcul-d-a-15.xlsx (32.31 Ko)

Bonsoir,

Tu peux essayer ça : (à mettre dans le module ThisWorkbook)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Sh.Name Like "Cuve #" Then Sh.Range("U47").Value = Now
End Sub

Cordialement

Ferrand

Bonjour,

Désolé, je ne connais pas workbook.

Je me renseigne.

Workbook, c'est ton classeur

ThisWorkbook, est le module attaché au classeur.

(Il est bon de respecter une nomenclature précise des appellations pour éviter de se mélanger les pinceaux.)

Il te suffit d'ouvrir l'éditeur VBA (par exemple avec un simple Alt+F11) pour l'avoir sous les yeux.

Puis il te suffit de l'ouvrir pour y coller la macro (sans bricoler autre chose).

Tu peux fermer l'éditeur, la macro fera le reste. Il te faudra enregistrer le classeur au format avec macro (.xlsm) pour la conserver.

Bonne journée.

Ferrand

Désolé pour les termes maladroit, disons qu'insérer une somme sous excel est déjà pas mal pour moi.

J'ai essayé ta manip, un bug apparaît. tu pourras voir tout ça en pièce jointe.

Où est la pièce jointe ?

20bug2.docx (180.44 Ko)
20bug1.docx (174.52 Ko)

ici, erreur de manip.

Le classeur aurait été plus utile. La présence formule provoquait l'erreur. Insertion étendue aux 2 zones date et heure et version stabilisée.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim t
    If Sh.Name Like "Cuve #" Then
        t = Now
        Application.EnableEvents = False
        Sh.Range("S45").Value = t
        Sh.Range("U47").Value = t
        Application.EnableEvents = True
    End If
End Sub

Bonne continuation

Ferrand

Un génie ferrand !

Par contre j'ai pas saisi la manip. je m'y pencherais dessus à temps perdus.

Autre question.

Sur la feuille "ouverture cuve" je n'arrive pas a faire un transfert de données avec ces conditions :

Si D10=1 alors V10=Q43, si D10=2 alors V10=Q45 et si D10=3 alors V10=Q47

En gros, selon le choix de la cellule cuve, la densité se reporte automatiquement en V10

Formule en V10 :

=INDIRECT("Q"&41+D10*2)

Avec des SI, formule 3 fois plus longue, et on ne peut appliquer les formules classiques de recherche à cause de tes fusions (injustifiées d'ailleurs).

La formule se tire sur la colonne, mais mettre :

=SI(D10<>"";INDIRECT("Q"&41+D10*2);"")

de même que pour tes autres formules : conditionner pour éviter l'affichage d'erreurs ou de 0.

Ferrand

ça marche nikel.

Peux-tu détailler ta formule stp ?

J'ai pris l'habitude de travailler avec des petites cellules pour avoir une mise en page plus aisée.

Je vais essayer de travailler différemment.

Un grand merci pour ton aide.

Formule toute simple en fait : la fonction INDIRECT te permet de faire référence à une plage ou une cellule de façon indirecte.

Exemple : tu tapes Q47 dans A1, c'est du texte, mais aussi une référence de cellule ; si tu tapes ailleurs la formule :

=INDIRECT(A1) elle te renverra la valeur figurant en Q47.

Tu peux aussi formuler directement : =INDIRECT("Q47") aboutit au même résultat [mais là ça n'a pas d'intérêt car il te suffit de faire : =Q47 ].

Mais dans ton cas, selon la valeur de D10, tu appelles Q43, Q45 ou Q47, selon que D10 = 1, 2 ou 3.

Le "Q" est commun, et un peu de calcul te montre que : 43=41+1*2, 45=41+2*2 et 47=41+3*2.

Tu peux donc écrire : =INDIRECT("Q"&41+D10*2).

Bonne soirée.

Ferrand

Bonjour,

C'est complexe mais je saisi ton raisonnement. fallait y penser !

Par contre je me suis un peu emballé, disons qu'entre temps la valeur de Q change, j'aimerais conserver les valeurs antérieure de Q.

La feuille "ouverture cuve est destinée à l'impression, d'ou l’intérêt d'un historique.

La variation du résultat d'une formule ne provoque pas d'évènement Change. Tu peux te rabattre sur l'évènement Calculate, mais ça me paraît assez lourd pour la chose, tester si les valeurs ont changé ou non en se référant à la valeur antérieure dans l'historique et enregistrer si changement... il me paraîtrait plus judicieux de faire un enregistrement automatique des valeurs à la fermeture du classeur (ou à l'ouverture).

A toi de voir. Dans tous les cas, il te faut définir un emplacement de cet historique.

Cordialement

Ferrand

bonsoir

vous voudriez bien m'aider sur mon problème de mise a jour automatique d'heure.

en réalité je veux une formule simple qui me permettrai de mettre en B1 l'heure du système si la cellule A1 es renseigné mais sans toute fois changer cette heure si je renseigne une autre ligne!

D'avance merci

Rechercher des sujets similaires à "mise jour heure"