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

  1. #1
    Membre à l'essai
    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
    Points : 22
    Points
    22
    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 éminent
    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
    Points : 6 871
    Points
    6 871
    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 à l'essai
    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
    Points : 22
    Points
    22
    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 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    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 éminent
    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
    Points : 6 871
    Points
    6 871
    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 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    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

  7. #7
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Oui, là on est un peu dans le brouillard
    Attendons la suite, si il y a !

    Bon WE

    Hervé.

  8. #8
    Membre à l'essai
    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
    Points : 22
    Points
    22
    Par défaut
    bonjour

    voir fichier joint

    je veux que les cellules jaunes m'affichent les valeurs des cellules des colonnes précedentes durant la journée et les journées précedentes.

    exemples : Aujourd'hui la cellule B305 m'affiche la valeur de la caisse d'aujourd'hui. Je veux que la cellule C305 suit les variations de la valeur de la cellule B305 durant toute la journée et m'affiche aussi la valeur de la caisse d'aujourd'hui, mais le lendemain la cellule B305 m'affichera un zero et je veux que la cellule C305 continue à m'afficher la valeur de la caisse d'hier, pas un zero ou rien.

    le fichier joint comprent des macros faites par un autre collaborateur, mais ne fonctionnent pas comme prévu.

    merci de vos collaborations
    Fichiers attachés Fichiers attachés

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour, bonjour !

    Et t'en est où sur l'autre site ?‼

    Car lors d'un Cross Posting sauvage, on préfère ne pas perdre du temps et ne pas y répondre …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  10. #10
    Membre à l'essai
    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
    Points : 22
    Points
    22
    Par défaut
    Bonjour

    Oui j'ai posé mon pbobème sur deux forum, un en anglais et l'autre en français dans le but d'augmenter ma chance d'arriver à une solution. Et si j'arrive à une solution dans un forum je vais la monter dans l'autre forum sans signaler le nom du forum bien sûre.
    Je ne sais pas si j'ai le droit de faire celà ou non ?

  11. #11
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    disons que l'étiquette voudrais que tu attendes 24 ou 48h sans réponse avant de poster dans un autre forum. Par respect pour les bénévoles, qu'ils ne cherchent pas pour rien.
    C'est plus efficace si on peut suivre l'historique, et ça évite en plus de refaire des propositions déjà faites.
    Et si tu veux tout savoir nous sommes nombreux à avoir une liste noire de pseudos pas trop 'respectueux'. Dans ce cas on zappe et on passe au suivant comme dit Marc-L...
    Et si tu tiens toujours à poster dans plusieurs forums, le signaler au contraire. Au moins c'est clair et on sait à quoi s'en tenir si on intervient. Là je n'ouvre même pas ton fichier ne sachant ou ça en est ailleurs...

    eric

  12. #12
    Membre à l'essai
    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
    Points : 22
    Points
    22
    Par défaut
    OK, je m'excuse pour le dérangement.

  13. #13
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Pas grave, maintenant tu sais ;-)

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