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 :

Macro pour récupérer la valeur d'une formule avec Aujourd'hui


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Macro pour récupérer la valeur d'une formule avec Aujourd'hui
    Bonjour tout le monde,

    n'ayant pas aucune connaissance des macros, je voudrai pourvoir, après avoir inscris "R" sur une cellule, récupérer la valeur d'une cellule me donnant le nombre de jour dépassant la date d'échéance.
    Voici l'exemple en fichier attaché.
    Par la même occasion connaissez vous un bon site me permettant d'apprendre pas à pas les VBA et les macros.

    Merci beaucoup pour vos réponses.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Slt,
    Le nombre de jour en question sont les jours de la colonne E?
    ET tu veux les récuperer pour les mettre où?

    Si j'ai compris la date en colonne A c la date de Facturation et la date en colonne C la date d'échéance.
    Pour Savoir combien de jours sont passée entre la date d'échéance et la date de règlement peut-être qu'ils faut rajouter une colonne avec la date de règlement, du moins je crois....

    Après on peut essayer de faire quelque choses.

    A+
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci rvtoulon pour ta réponse.

    Oui le nombre de jour est inscris dans la colonne E, qui fonctionne comme un compteur, puisqu'ayant dans la formule la fonction aujourdhui(). mais par exemple à la ligne suivante lorsque je tape R la formule est copié et collé en valeur à la meme place.

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Re,
    lorsque tu met R dans la colonne B la colonne E doit elle afficher quelques choses ou rien?

    dsl mais je comprend pas
    mais par exemple à la ligne suivante lorsque je tape R la formule est copié et collé en valeur à la meme place.
    parceque j'ai essayé je met R partout et la formule reste propre àchaque ligne elle n'est pas recopié ...

    au risque de me répéter, dsl, tu dis que tu veux récupérer le contenu de la cellule de la dernière colonne pour en faire quoi, la mettre ou?

    je voudrai pourvoir, après avoir inscris "R" sur une cellule, récupérer la valeur d'une cellule me donnant le nombre de jour dépassant la date d'échéance.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  5. #5
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Peut être qu'une formule comme DATEDIF pourrait te convenir?

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Désolé de ne pas pouvoir me faire bien comprendre.

    En fait il ne se passe rien parce qu'il n'y a pas de macro. Je voudrai justement pouvoir écrire ce macro qui me permettra qu'à chaque fois que je tape R en B6 qu'il me copie la formule en E6 et me la colle toujours en E6 mais en valeur.

    DATEDIF je ne connais pas.

    Encore merci!

  7. #7
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Re slt,
    J'ai compris ce que tu voulais voici le code qui fonctionne pour le nombre de ligne de l'exemple:
    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
     
    Sub Macro1()
    Dim i As Long, vcel As Integer
     
    For i = 5 To 8
    If Range("B" & i) = "" Then
        Range("E" & i).FormulaR1C1 = "=TODAY()-RC[-2]"
     
    ElseIf Range("B" & i) = "R" Then
        Range("E" & i).FormulaR1C1 = "=TODAY()-RC[-2]"
    vcel = Range("E" & i).Value
    Range("E" & i) = vcel
     
    End If
    Next i
     
    End Sub
    il y a peut-etre plus simple mais au moins il fonctionne ! je t'ais mis le fichier en exemple.

    A+
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Génial ça marche!

    juste que si je veux laisser la boucle ouverte pas seulement à la ligne 8 disons à 1000 s'il n'y a rien comme date d'échéance,le macro continue à inscrire la date d'aujourd'hui.

    Mais dites moi comment fait on pour être aussi bon en VBA? Un site ou ebook SVP n'importe quoi.

    En tous cas merci encore une fois!

  9. #9
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    SLT

    Perso je ne suis vraiment pas bon je suis novice comme toi. j'ai beaucoup appris sur ce site qui est génial et en cherchant des tutos ici et ailleurs sur le vba.
    Et puis moi, comme je débute j'ai un petit livre trouvé à la fnac pour moins de 10€ fait par micro application "super poche" "VBA pour Excel 2007, qui donne des exmples et la base en vba.

    heureux d'avoir pu t'aider.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  10. #10
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Si je peux ajouter un peu de condiments
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro1()
    Dim i As Long
    For i = 5 To Range("C65536").End(xlUp).Row  'Désolé je n'ai pas Excel 2007
      Range("E" & i).FormulaR1C1 = "=TODAY()-RC[-2]"
     If Range("B" & i) = "R" Then Range("E" & i).value = Range("E" & i).value
    Next i
    End Sub
    Cordialement
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci à vous deux,

    mais encore un autre souci, mois qui voulais figer le nombre de jour echu en tapant R si je recalcule le lendemain, le nombre de jour est recalculé

  12. #12
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Slt je pense avoir trouvé la solution à ton problème:
    si on rajoute une condition en mettant un X dans la colonne F comme si tu cochait la ligne pour dire que c payer, par exemple, le code pourrais etre celui-ci:
    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
    19
    20
    21
     
    Sub Macro1()
    Dim i As Long
     
    For i = 5 To Range("C65536").End(xlUp).Row
    If Range("B" & i) = "" Then
        Range("E" & i).FormulaR1C1 = "=TODAY()-RC[-2]"
     
    ElseIf Range("B" & i) = "R" And Range("F" & i) = "X" Then
    Range("E" & i).Value = Range("E" & i).Value
     
    ElseIf Range("B" & i) = "R" And Range("F" & i) = "" Then
        Range("E" & i).FormulaR1C1 = "=TODAY()-RC[-2]"
    Range("E" & i).Value = Range("E" & i).Value
     
    Range("F" & i) = "X"
     
    End If
    Next i
     
    End Sub
    ce code fonctionne, et fait ce que tu souhaites même si le jour change.
    voici le fichier test pour exemple.
    A+ (si c bon n'oublie pas de mettre résolu).
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  13. #13
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    J'arrive un peu tard mais c'est juste pour donner une autre piste...
    Au lieu de mettre la formule 'today()' dans la feuille qui implique donc un recalcul à l'ouverture du fichier et donc un résultat non attendu on peut faire ce calcul dans la Macro pour donner la valeur à la cellule (sans formule)
    Donc, ça revient à simplifier ces lignes (par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ElseIf Range("B" & i) = "R" And Range("F" & i) = "" Then
        Range("E" & i).FormulaR1C1 = "=TODAY()-RC[-2]"
    Range("E" & i).Value = Range("E" & i).Value
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf Range("B" & i) = "R" And Range("F" & i) = "" Then
        Range("E" & i) = Date - range("c" & i).value
    Date renvoyant l'équivalent de Today() dans Excel.

    A+
    N'oubliez pas le si votre problème est solutionné.

  14. #14
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bjr Fvandermeulen,
    effectivement date est bien mieux que today, du coup il n'y a pas besoin d'ajouter un critère supplémentaire (mon X par exemple lol) et cela fonctionne même si le jour change voici le code:
    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
    19
     
    Sub Macro1()
    Dim i As Long
     
    Application.ScreenUpdating = False
     
    For i = 5 To Range("C65536").End(xlUp).Row
     
    If Range("B" & i) = "" Then
        Range("E" & i) = Date - Range("c" & i).Value
     
    ElseIf Range("B" & i) = "R" Then
        Range("E" & i).Value = Range("E" & i).Value
     
    End If
    Next i
     
    Application.ScreenUpdating = True
    End Sub
    Il fonctionne à merveille cool.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  15. #15
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    D'après ton code tu peux encore faire plus court, n'as tu que deux possibilités pour ta colone B, je veux dire si ça ne peut être que vide ou R alors tu n'as pas besoin du ElseIf.

    A+
    N'oubliez pas le si votre problème est solutionné.

  16. #16
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Re, en réalité ce code est pour patougaffou,
    et effectivement sa colonne B est soit vide "" soit pleine "R" il n'y a rien d'autre.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

Discussions similaires

  1. [CR XI] Récupérer la valeur d'une formule d'un sous état
    Par duduma dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 16/04/2013, 15h01
  2. [XL-2003] Macro pour copie de valeurs d'une feuille dans une autre
    Par lili189 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/10/2012, 08h25
  3. [XL-2003] Commande pour récupérer la valeur d'une variable
    Par lb.did dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/11/2011, 18h23
  4. Comment faites-vous pour récupérer la valeur d'une liste dynamique ?
    Par Cvbdev dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 03/06/2010, 09h01
  5. Réponses: 2
    Dernier message: 21/09/2007, 17h27

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