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:
Impec, ça fonctionne comme il faut. J'ai 183 pour la ligne 2, -29 pour la ligne 3 et rien pour la ligne 4.
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
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:
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.
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
J'ai checké mes paramètres régionauxet je ne vois rien de spécial.
![]()
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
Partager