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 :

Probléme avec "=TODAY()"


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
    agent de maitrise
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Par défaut Probléme avec "=TODAY()"
    bonjour

    dans une macro je voudrais faire référence à "=TODAY()" qui correspond à la fonction "aujourdhui()" , comme je n'ai pas le résultat voulu, j'ai chercher à vérifier en exécutant la macro si dessous.

    le soucis elle me renvoie "faux", j'ai essayé tous les formats de date possible dans ma "colonne b" j'ai toujours " faux"

    merci de votre aide par avance

    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 test()
     
    Dim ligne As String
     
    ligne = 11
     
    If Cells(ligne, 2) = "=TODAY()" Then
     
    Cells(ligne, 25) = "vrai"
     
    Else
     
    Cells(ligne, 25) = "faux"
     
    End If
     
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour Philippe87420

    Si tu cherche à vérifier si la cellule contient la date du jour,

    Remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(ligne, 2) = "=TODAY()" Then
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(ligne, 2) = Date Then

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Juste en passant, pour te montrer, il est possible d'utiliser la fenêtre Espion qui permet de voir les propriétés d'un object.

    Nom : Espion sur Object (1).png
Affichages : 202
Taille : 9,4 Ko
    Nom : Espion sur Object (2).png
Affichages : 201
Taille : 7,1 Ko

    On voit que c'est la propriété "Formula" qui retourne "=TODAY()"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        If Cells(ligne, 2).Formula = "=TODAY()" Then
    Pour utiliser l'espion:
    => Surligne Cells(ligne, 2) dans la zone du code.
    => Clique droit de la souris
    => puis "Ajouter un espion"
    => OK


    ----------------------------------------------------------------------------------------------------------------

    Je répare mon erreur, parce qu'il est tout à fait possible de mettre des espaces après le signe égale dans une formule et dans ce cas, ce n'est pas la bonne méthode. Il est préférable de faire évaluer l'expression par Excel plutôt.
    Ça devient après correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim ligne As Long
    Dim MaFeuille as Worksheet
    '...
    Set MaFeuille = Feuil1 ' ou autre
    MaFeuille.Cells(ligne, 2).Value = [TODAY()]
    '...
    Dernière modification par Invité ; 12/04/2014 à 10h57.

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    en résumé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim ligne As String
    ligne = 11
    If Cells(ligne, 2).Formula = "=TODAY()" Then
      MsgBox "vrai" 'à adapter à la cellule concernée
    Else
      MsgBox "faux" 'à adapter à la cellule concernée
    End If
    End Sub
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim ligne As String
    ligne = 11
    If Cells(ligne, 2).FormulaLocal = "=AUJOURDHUI()" Then
      MsgBox "vrai" 'à adapter à la cellule concernée
    Else
      MsgBox "faux" 'à adapter à la cellule concernée
    End If
    End Sub
    ou, pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim ligne As String, verif As Boolean
    verif = False
    ligne = 11
    If Cells(ligne, 2).FormulaLocal = "=AUJOURDHUI()" Then verif = "vrai"
    MsgBox verif ' à adapter
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre averti
    Homme Profil pro
    agent de maitrise
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Par défaut
    bonjour Casefayere,

    merci pour ta réponse, ça ma permis de solutionner une partie de mon problème , maintenant si je dis que : Cells(ligne, 2) de la ligne 21 est = au 22/04/2014 soit "=TODAY() +9 "

    la macro renvoie faux ????

    je ne comprends pas car "=TODAY() +9 " = bien le 22-04-2014 je suis désoler mais j'ai encore besoin d'aide,

    merci par avance

    Philippe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Sub test()
    Dim ligne As String
    ligne = 21
     
    If Cells(ligne, 2).Formula = "=TODAY() +9 " Then
     
      MsgBox "vrai" 'à adapter à la cellule concernée 
    Else
      MsgBox "faux" 'à adapter à la cellule concernée
    End If
    End Sub

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    Normal tu demandes un résultat donc si tu inscris "22/04/2014" en B21, ton code doit être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim ligne As String
    ligne = 21
    If Cells(ligne, 2) = Date + 9 Then
      MsgBox "vrai" 'à adapter à la cellule concernée
    Else
      MsgBox "faux" 'à adapter à la cellule concernée
    End If
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par casefayere Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim ligne As String
    ligne = 21
    If Cells(ligne, 2) = Date + 9 Then
      MsgBox "vrai" 'à adapter à la cellule concernée
    Else
      MsgBox "faux" 'à adapter à la cellule concernée
    End If

    C'est ce que je disais dans mon post No 2.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut,

    Citation Envoyé par Docmarti Voir le message
    C'est ce que je disais dans mon post No 2.
    C'est tout à fait juste

    Pour ma part, j'ai répondu en complément plutôt qu'en substitution a ton message pour rester avec une syntaxe Excel.
    Je savais que ton code était bon quand j'ai répondu.

    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 Test()
     
        Dim ligne As Long
     
        ligne = 11
     
        If Cells(ligne, 2).Value2 = [TODAY()+15] Then
     
            Cells(ligne, 25) = "vrai"
     
        Else
     
            Cells(ligne, 25) = "faux"
     
        End If
     
    End Sub
    P.S.: C'est juste un autre exemple
    Dernière modification par Invité ; 14/04/2014 à 07h05.

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    VRAI et FAUX étant des valeurs logiques reconnues par Excel, je ne comprends pas la raison d'utiliser une chaîne de caractères plutôt que la valeur booléenne.
    Ce qui permettrait d'avoir comme code une simple comparaison logique et de plus rendrait plus aisé l'exploitation de cette donnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(ligne, 25) = Cells(ligne, 2).Value = [TODAY()+9]
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(ligne, 25) = Cells(ligne, 2).Value = Date + 9
    Soit avec une formule Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre averti
    Homme Profil pro
    agent de maitrise
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Par défaut
    bonjour Philippe,

    merci pour la réponse , simplement vrai ou faux me servait à vérifier ma macro.

    Avec les fonctions je suis assez calé, mais en VBA j'ai eu que 2 jours de formation de base.....

    A tous

    J' ai un autre soucis sur le code suivant:
    j'ai indiqué le probléme en commentaire dans le code

    merci de votre aide par avance

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Sub misedesbesoins()
    
    
    Dim i As Integer
    'recherche de la ligne active
    On Error Resume Next
    i = Application.WorksheetFunction.Match(CLng(Date), Range("b:b"), 0)
    If i = 0 Then i = 4
    
    Range("b" & i).Activate
    
        Dim ligne As String
        Dim ligne1 As String
        Dim Col As String
        
      
        
    ligne = ActiveCell.Row
        
      Cells(ligne, 3).Value = "1"
        
    'mise en page pour les 15 jours à venir
    
    Do While Cells(ligne, 2).Value <> Cells(ligne, 2).Value = Date + 15   ' voila à quoi sert ma question précedent question je vais pouvoir supprimer une colonne et 3 ligne qui suive 
    Cells(ligne + 1, 3).Value = Cells(ligne, 3).Value + 1
    ligne = ligne + 1
    Loop
    
     'on recherche les besoins par référence et date
       
       ligne = ActiveCell.Row
       ligne1 = 3
       ligne2 = 5
       Col = 2
        
       
        With Worksheets("suivi des stocks")
           Do While .Cells(ligne2, Col + 2).Value <> "203"
           
           
         ligne = ActiveCell.Row
        ligne1 = 3
         Do While Cells(ligne, 3) <> "15"
         
         
    ' le problème est sur le texte en gras et bleu de la ligne suivante, j'ai effectué un test qui s'exécute correctement avec la valeur de L3( ligne 2)
    
    'Mais je n'arrive pas à écrire correctement la ligne si dessous afin de l'inclure dans la boucle sur les colonnes
    
    
    '.Cells(ligne, Col + 4).Value = Evaluate("SUMPRODUCT(('contrôle running liste'!$g$3:$g$120)*('contrôle running liste'!$d$3:$d$120= cells(ligne1, col + 2).value *(INT('contrôle running liste'!$i$3:$i$120)=$B" & ligne & "))")
    
    Cells(ligne, Col + 4).Value = Evaluate("SUMPRODUCT(('contrôle running liste'!$g$3:$g$120)*('contrôle running liste'!$d$3:$d$120= l3)*(INT('contrôle running liste'!$i$3:$i$120)=$B" & ligne & "))")
    
    ligne = ligne + 1
    Loop
    Col = Col + 4
    Loop
    
    End With
    
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Shell] Problème avec le Back-quote (ksh)
    Par bob94700 dans le forum Linux
    Réponses: 3
    Dernier message: 27/01/2008, 12h45
  2. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  3. [MySQL] Problème avec un double quote
    Par wormseric dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/01/2007, 14h44

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