IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Figer la valeur d'une variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Octobre 2012
    Messages : 36
    Par défaut Figer la valeur d'une variable
    Bonjour
    Je m’adresse aux spécialistes de la programmation VBA pour excel.
    J’ai une variable qui représente la caisse que je l’ai nommé « Caisse », il y a des recettes et des dépenses. La caisse varie toute la journée bien sûre. Pour afficher la valeur de la caisse aujourd’hui, j’ai utilisé la formule suivante : =SI(Date=AUJOURDHUI();Caisse;"") voir fichier joint.
    Mais cette formule m’affiche la valeur de la caisse seulement aujourd’hui, Je cherche une macro qui m’affiche la valeur de la caisse chaque jour, c'est-à-dire, durant toute la journée je veux voir la valeur réelle et variable de la caisse, le lendemain je veux voir la valeur de la caisse de la fin de journée d’hier figé correspondante à la date d’hier.
    La caisse varie continuellement toute la journée. Je désire figer sa valeur à la fin de la journée dans la cellule correspondante à aujourd'hui.

    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    le lendemain je veux voir la valeur de la caisse de la fin de journée d’hier figé correspondante à la date d’hier...
    La caisse varie continuellement toute la journée. Je désire figer sa valeur à la fin de la journée dans la cellule correspondante à aujourd'hui
    A mettre dans le module du classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
        Dim Plage As Range
        Dim Cel As Range
     
        'défini la plage en colonne A de Feuil1
        With Worksheets("Feuil1")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        Set Cel = Plage.Find(Date, , xlValues, xlWhole)
     
        If Not Cel Is Nothing Then Cel.Offset(, 1).Value = Caisse
     
    End Sub
    Mais cette formule m’affiche la valeur de la caisse seulement aujourd’hui, Je cherche une macro qui m’affiche la valeur de la caisse chaque jour, c'est-à-dire, durant toute la journée je veux voir la valeur réelle et variable de la caisse
    Pour ça, tu peux utiliser une fonction perso qui retourne la valeur de la variable "Caisse" à chaque calcul de la feuille. A mettre dans un module standard (où se trouve la déclaration Public de la variable "Caisse" par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Function VALEURCAISSE() As Double
     
        Application.Volatile
        VALEURCAISSE = Caisse
     
    End Function
    que tu appelle ensuite depuis Excel par une formule du genre :
    Hervé.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Octobre 2012
    Messages : 36
    Par défaut merci
    Merci infiniment de votre aide

    cependant, vu que je suis débutant en VBA, je ne crois pas que je puisse adapter votre solution à mon fichier original, d'ailleurs j'ai essayé. Est ce que c'est possible de vous envoyer mon fichier original en privé pour m'aider a appliquer cette solution?
    merci

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Pourquoi en vba alors ?
    mets la date désirée dans une cellule (Ctrl+; pour la date du jour), par exemple en F1 et :
    =SI(Date=F1;Caisse;"")

    eric

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Eric, comme il est demandé que la valeur de la caisse soit figée pour chaque jour, une formule Excel ne peut convenir puisqu'elle sera recalculée et donc avec la condition SI, la valeur sera effacée car la date ne sera plus celle du jour.

    naahou2000, pour arriver dans le VBE, touches Alt+F11 ensuite, tu double clique (dans la fenêtre en haut à gauche) sur le mot "ThisWorkbook" et dans la partie éditeur de texte, tu colle le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
        Dim Plage As Range
        Dim Cel As Range
     
        'défini la plage en colonne A de Feuil1
        With Worksheets("Feuil1")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        Set Cel = Plage.Find(Date, , xlValues, xlWhole)
     
        If Not Cel Is Nothing Then Cel.Offset(, 1).Value = Caisse
     
    End Sub
    Par contre, en ce qui concerne la fonction "VALEURCAISSE" j'ai supposé que tu savais passée une valeur à la variable "Caisse" (ta formule "=SI(Date=AUJOURDHUI();Caisse;"")" est aussi une interrogation pour moi car tu ne peux pas retourner la valeur d'une variable directement dans Excel) afin que la fonction te retourne cette valeur mais si tu ne comprends pas VBA ça va pas être simple :-(
    Comment fais-tu pour passer une valeur à ta variable ?

    Hervé.

    Hervé.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Re,

    Eric, comme il est demandé que la valeur de la caisse soit figée pour chaque jour, une formule Excel ne peut convenir puisqu'elle sera recalculée et donc avec la condition SI, la valeur sera effacée car la date ne sera plus celle du jour.
    Je me demande justement s'il n'a pas une cellule unique pour afficher la caisse du jour, mais qu'il ne veut pas qu'elle change automatiquement le matin.
    Ce qui n'empêche pas d'enregistrer un historique en plus.
    Mais sans fichier...

    eric

Discussions similaires

  1. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 13h26
  2. récupération d'une valeur dans une variable
    Par jh0483 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/08/2005, 09h49
  3. Réponses: 2
    Dernier message: 16/08/2005, 09h43
  4. afficher dans une boite de dialogue la valeur d'une variable
    Par micknic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/07/2005, 09h25
  5. Intercepter le changement de valeur d'une variable
    Par Captain_JS dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/01/2005, 08h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo