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 :

Calcul du nombre de jour entre 2 dates


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Par défaut Calcul du nombre de jour entre 2 dates
    Bonsoir tout le monde,

    Aujourd'hui, je n'arrive pas à m'en sortir côté Calcul du nombre de jours entre 2 dates.

    J'ai tenté tout ce que j'ai pu pour finalement revenir sur un exemple simple afin de voir si cela fonctionne correctement.

    Je suis reparti du code proposé par Fring disponible ici.

    J'ai pour cela consituté un petit tableau de 3 lignes comme suit:

    DATE PREVUE DATE ACTUELLE NB JOURS
    01/01/2017 03/07/2017
    01/01/2017 03/12/2016
    01/01/2017

    Le but étant de remplir automatiquement la colonne C.

    J'ai donc adapté le code en mettant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub NbJourEcart()
    Dim i%
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 2) = Empty Then  Cells(i, 3) = Empty
        Else
        Cells(i, 3) = Val(Format(CDate(Cells(i, 2)) - CDate(Cells(i, 1))))
        End If
    Next
    End Sub
    Impec, ça fonctionne comme il faut. J'ai 183 pour la ligne 2, -29 pour la ligne 3 et rien pour la ligne 4.

    J'ai ensuite transposé ce code dans mon fichier de production. Les colonnes sont différentes (la 1 devient la 8, la 2 devient la 9 et la 3 devient la 11) mais la logique est identique.

    J'obtiens malheureusement un erreur Type Mismatch sur la ligne où le Val est appliqué.

    Je me dis que cela vient des dates disponibles dans les colonnes 8 et 9, ce qui me semble être la piste à suivre car, j'ai un mélange de DD/MM/YYY et DD-Mon-YYYY
    au format US (je ne parle pas uniquement d'interprétation d'affichage mais bien de valeur contenu dans le champ!). Cela vient de l'extraction du système contenant ces données, là je n'y peux rien.

    J'ai du coup tenté de forcer ce contenu en voulant appliquer le format DD/MM/YYYY aux colonnes 8 et 9. Certains posts sur le net parle de cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim cellule As Range
        For Each cellule In Range(Cells(LastRow, 8), Cells(LastRow, 9))
            cellule.Value = Format(cellule.Value, "dd/mm/yyyy")
        Next cellule
    Je dois avouer que cela ne m'a pas aidé car l'erreur surgit toujours (toujours sous une forme Custom côté format). A ce demander s'il ne faudrait pas remplacer -Jan- par /01/, -Feb- par /02/, etc.

    J'ai checké mes paramètres régionauxet je ne vois rien de spécial.
    Nom : param_region.png
Affichages : 213
Taille : 7,9 Ko
    Je suis également aller consulter la page de Didier Gonard mais je n'ai pas réussi à faire le pont avec mon besoin.

    Si quelqu'un a une piste ou voit un pb de code, il ou elle est le bienvenu.

    Cordialement,
    Camille

  2. #2
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comment ferais-tu sans VBA ?
    soit en anglais
    et donc pour placer cette formule dans les celules C2:C100
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("c2:C100").Formula = "=IF(B2,B2-A2,"""")"
    et pour êre plus précis si la formule doit être placée dans la feuille nommée Feui1 du classeur où se trouve le code VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     With ThisWorkbook.Worksheets("Feuil1")
     .Range("c2:C100").Formula = "=IF(B2,B2-A2,"""")"
     End With
    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

  3. #3
    Membre confirmé Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Par défaut
    Bonjour Philippe,

    Merci pour cette approche. Je suis donc allé dans ce sens et cela m'a permis de m'en sortir!

    Pour tout te dire, cela n'a pas marché car la formule n'était pas appliquée. Je veux dire par là qu'au lieu d'avoir le résultat de la formule, j'avais la formule en elle-même dans la cellule. Bref, elle ne s'appliquait pas.

    Cela m'a poussé à appliquer à nouveau ma formule Excel dans la cellule car j'avais alors de sérieux doute sur le contenu sur lequel j'effectue ce travail:
    Et bien cela ne fonctionnait pas! J'avais un #VALUE! en retour!

    Conclusion: les dates n'étaient pas du tout interprétées comme telles. Retour à la case départ car c'est bien ce qui me gênait au début.

    J'ai alors trouvé une astuce à la noix pour que mes dates présentes dans les colonnes H et I soient au format JJ/MM/AAAA au lieu de JJ-Moi-AAAA. Les puristes vont encore une fois sauter au plafond car mon code est supra-lourd. J'ai en effet dupliqué le bout de code suivant 12 fois pour chaque mois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveSheet.Columns("H:I").Replace What:="-Dec-", Replacement:="/12/", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
    J'ai alors à nouveau appliqué le code fourni dans mon premier message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
       If Cells(i, 9) = Empty Then
          Cells(i, 11) = Empty
       Else
          Cells(i, 11) = Val(Format(CDate(Cells(i, 9)) - CDate(Cells(i, 8))))
        End If
    Next
    Et bien c'est good, cela fonctionne. Aussi bien en négatif qu'en positif.

    Il me reste à trouver une solution pour optimiser le code au niveau des 12 remplacements cités ci-dessus et de discuter avec l'équipe Système pour clarifier le format des dates en sortie d'extraction.

    Je vous souhaite un bon week-end à toutes et à tous !

    Cordialement,
    Camzo

Discussions similaires

  1. [Dates] Calcul du nombre de jours entre 2 dates
    Par FredLam dans le forum Langage
    Réponses: 8
    Dernier message: 30/11/2011, 19h41
  2. Calcul du nombre de jours entre 2 date
    Par djso3 dans le forum Général VBA
    Réponses: 3
    Dernier message: 06/11/2009, 09h29
  3. Calcul du nombre de jours entre plusieurs dates
    Par pcl73 dans le forum Access
    Réponses: 6
    Dernier message: 06/03/2007, 21h16
  4. [Dates] calcul du nombre de jours entre 2 dates
    Par lilie62 dans le forum Langage
    Réponses: 5
    Dernier message: 22/11/2006, 15h55
  5. calcule du nombre de jours entre 2 dates
    Par nazimb dans le forum ASP
    Réponses: 4
    Dernier message: 28/09/2004, 15h22

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