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 :

Résulats différents avec Datdif dans formule Excel et Datediff en VBA ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 54
    Points : 24
    Points
    24
    Par défaut Résulats différents avec Datdif dans formule Excel et Datediff en VBA ?
    Bonjour à tous,

    Je me permets de vous demander de votre aide car je dois automatiser des formules sous excel. Voici un exemple :

    "=SI(C3=4;SI(L3=""; DATEDIF(DATE(2006;12;22);DATE(2009;10;8);"m");DATEDIF(L3;DATE(2009;10;8);"m"));""))"

    J'ai crée un code VBA correspondant a cette formule cependant elle ne me donne pas le même résultat. Voici mon 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
    20
    21
    22
    Sub Ancienneté()
     
    Dim firstDate As Date
     
    firstDate = CDate(InputBox("Entrez une date"))
    For i = 2 To ActiveSheet.UsedRange.Rows.Count
     
    If Range("C" & i).Value <> 4 Then
    Range("M" & i).Value = ""
         Else
     
            If Range("L" & i).Value = "" Then
            Range("M" & i).Value = DateDiff("m", Range("I2").Value, firstDate)
                Else
            Range("M" & i).Value = DateDiff("m", Range("L" & i).Value, firsDate)
     
            End If
    End If
     
    Next i
     
    End Sub
    Y a-t-il une erreur ??

    Merci pour votre aide!

  2. #2
    Membre averti
    Inscrit en
    Février 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 267
    Points : 306
    Points
    306
    Par défaut
    Bonjour,

    Deux petites corrections à faire sur ces deux lignes

    Range("M" & i).Value = DateDiff("m", Range("I2").Value, firstDate)
    Range("M" & i).Value = DateDiff("m", Range("L" & i).Value, firsDate)

    Le code à essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Ancienneté()
    Dim firstDate As Date
    Dim i As Integer
    firstDate = CDate(InputBox("Entrez une date"))
    For i = 2 To ActiveSheet.UsedRange.Rows.Count
    If Range("C" & i).Value <> 4 Then
    Range("M" & i).Value = ""
    ElseIf Range("L" & i).Value = "" Then
        Range("M" & i).Value = DateDiff("m", Range("I" & i).Value, firstDate)
    Else
        Range("M" & i).Value = DateDiff("m", Range("L" & i).Value, firstDate)
    End If
    Next i
    End Sub
    Si tu le veux, tu peux aussi enlever tous les ".Value" dans ton code.

    Amicalement

    Dan

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Merci pour ton aide.

    Cependant c'est étrange car le code vba est censé exécuter la même fonction que la formule or le résultat au final n'est pas le même. Le résultat obtenu avec le code vba est supérieur de 1 par rapport au résultat de la formule.

  4. #4
    Membre averti
    Inscrit en
    Février 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 267
    Points : 306
    Points
    306
    Par défaut
    re,

    Peux-tu me donner quelques valeurs à tester

    A te relire

    Dan

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Re,

    Voici un bout du fichier. Dans la colonne M se trouve le résultat avec le code VBA et dans la colonne N celui avec la formule excel.

    Merci pour ton aide!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Vous indiquez dans votre réponse :

    Voici un bout du fichier.
    mais il n'y a aucun fichier joint !

Discussions similaires

  1. Requête sql avec variable dans cellule excel
    Par MENOT72 dans le forum SQL
    Réponses: 2
    Dernier message: 09/09/2011, 17h33
  2. [XL-2003] Variable dans formule Excel
    Par thugiba3 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/05/2011, 16h33
  3. Référence dans formule Excel depuis VBA
    Par Neosquall2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/09/2008, 09h09
  4. Signification ="";""; dans formule Excel
    Par vérokit dans le forum Excel
    Réponses: 4
    Dernier message: 04/02/2008, 12h08
  5. Ajouter la date dynamiquement dans formule Excel
    Par tangjuncn dans le forum Excel
    Réponses: 5
    Dernier message: 10/10/2007, 12h56

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