temporiser le résultat d'une cellule par rapport à une autre cellule
#1
Débutant XLPages

Inscription: 01/02/2009

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
excel 2000
Posté le : 01-02-2009 17h42
Bonsoir,

Je suis nouveau sur le forum et "récent" sous Excel.

Je suis à la recherche d'une formule du style :

=TEMPO(A2,10)

une formule qui me permettrai de retrouver le résultat (VRAI,FAUX ou rien) de la cellule A2 dans ma cellule 10s après la modification de A2.

Quelqu'un connaitrait-il l'existance d'une telle formule ou la manière de réaliser cette fontion?

(Je cherche à reproduire le fonctionnement d'un automate pour pouvoir l'essayer dans ses retranchements. J'ai besoin de reproduire sous excel son fonctionnement automatique et de manière graphique)

Par avance merci

Hors Ligne
Rapport   Haut 

Re: temporiser le résultat d'une cellule par rapport à une autre cellule
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 01-02-2009 19h27
Bonsoir dhavid et bienvenue.

A vrai dire, je doute que tu puisses obtenir l'effet souhaité grâce à une fonction personnalisée.

Par contre, tu peux obtenir ce résultat à l'aide d'une procédure évènementielle VBA et la méthode OnTime.
Dans l'exemple joint, la cellule C10 se voit affecter la valeur de A2, dix secondes après mise à jour de A2 par l'utilisateur.

Code à copier dans le module de code de la feuille de calcul souhaitée (par exemple Feuil1 comme dans l'exemple joint) :
Option Explicit
'myDearFriend! - www.mdf-xlpages.com

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A2")) Is Nothing Then
        Application.OnTime Now + TimeSerial(0, 0, 10), ActiveSheet.CodeName & ".MAJcellule"
    End If
End Sub

Private Sub MAJcellule()
    Range("C10").Value = Range("A2").Value
End Sub

Attention toutefois
:
Si tu fermes ton classeur après mise à jour de A2 et avant mise à jour de la cellule cible C10, c'est à dire AVANT épuisement du délai de 10 secondes : Excel essaiera de réouvrir ton classeur pour réaliser la mise à jour demandée en temps voulu.

Voir l'article consacré à la méthode OnTime pour contourner au besoin ce problème.

Cordialement,
Pièce jointe:
zip PourDhavid.zip   [ Taille: 8.08 Ko - Téléchargements: 525 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: temporiser le résultat d'une cellule par rapport à une autre cellule
#3
Débutant XLPages

Inscription: 01/02/2009

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
excel 2000
Posté le : 02-02-2009 07h01
Merci pour la rapidité et la qualité de la réponse.

Je vais essayer de comprendre comment cela fonctionne pour l'adapter à mes besoins.

Cette procédure évenemetielle correspond tout à fait à la fonction que je souhaite. La réalisation que je veux faire comporte plusieurs temporisations de ce type qui peuvent se dérouler en parrallèle, superposées,imbriquées ou en série pour des durées différentes.

-est-il possible que plusieurs temporiation s'écoulent en même temps et soient indépendantes les unes des autres ?

-la fonction démare apres la mise à jour manuelle de la feuille. Serait-il possible de changer ce démarrage manu par un démarrage automatique par la mise à jour de la cellule "source" par une formule du type =OU(A3;A4) ? (sans intervention au clavier sur A3 ou A4). Ce seraient le résultat de deux autres tempo elles mêmes résultats de la première tempo.
Je sait cela peut paraître bizzare de faire "rentrer en oscillation" une feuille de calcul excel par une procedure sans fin rebouclée sur elle même mais c'est ce que je veux faire pour observer graphiquement le comportement de mon petit programme et trouver une faille s'il en existe une !!

En tout cas merci bien pour le sérieux coup de main.



Hors Ligne
Rapport   Haut 

Re: temporiser le résultat d'une cellule par rapport à une autre cellule
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 02-02-2009 21h12
Bonsoir dhavid, le Forum,

Citation :
dhavid a écrit :
La réalisation que je veux faire comporte plusieurs temporisations de ce type qui peuvent se dérouler en parrallèle, superposées,imbriquées ou en série pour des durées différentes.

-est-il possible que plusieurs temporiation s'écoulent en même temps et soient indépendantes les unes des autres ?

Chaque tâche programmée par une instruction OnTime est indépendante et possède son propre cycle de vie. Les temporisations peuvent donc s'écouler en simultané et/ou se chevaucher.
C'est un des effets intéressants de cette méthode OnTime, mais attention ! Attention car cet effet peut vite devenir pervers et peu maitrisable. Par ailleurs, je n'ai jamais tester le nombre de temporisations maximum simultanées que l'application peut supporter ainsi...
En tout cas, je te conseille vivement de consulter l'article comme indiqué plus haut et voire, de consulter tout ce que tu peux trouver dans l'aide VBA ou sur le net à ce sujet, car ce que tu souhaites faire demande forcément une bonne compréhension et une vraie maitrise de cette méthode.
Ayant déjà eu à jouer avec de tels évènements programmés en cascade, je t'avoue que la chose n'est pas très aisée, loin de là. Je te souhaite bon courage.

Citation :
dhavid a écrit :
-la fonction démare apres la mise à jour manuelle de la feuille. Serait-il possible de changer ce démarrage manu par un démarrage automatique par la mise à jour de la cellule "source" par une formule du type =OU(A3;A4) ? (sans intervention au clavier sur A3 ou A4). Ce seraient le résultat de deux autres tempo elles mêmes résultats de la première tempo.

Dans l'exemple joint précédemment, j'ai usé de l'évènement Change() de la feuille de calcul. Cet évènement se déclenche lors de la modification d'une cellule par l'utilisateur. Un des gros inconvénient avec VBA, c'est qu'on dispose d'une quantité limitée d'évènements déclencheurs.
Déclencher un traitement VBA par le simple recalcul d'une formule n'est malheureusement pas possible (en tout cas de façon simple et sûre).
Il existe bien l'évènement Calculate() par exemple, mais ce dernier n'est malheureusement pas lié à une cible particulière : cela signifie, entre autre, que l'évènement Calculate() se déclenche à chaque recalcul de la feuille, mais on ne peut déterminer l'origine du recalcul et donc, on ne peut savoir si cet évènement est déclenché par telle ou telle formule, dans telle ou telle cellule...

Autant te dire que tu sembles te lancer dans une tâche périlleuse ! Peut-être qu'Excel (un tableur, faut-il le rappeler) n'est pas l'application qu'il convient pour ce type de simulation... En tout cas, c'est mon avis.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes