Calcul de délai de retard avec conditions

Bonjour à tous,

J'ai besoin d'un petit coup de pouce

Mon tableau :

J'ai trois colonnes

Résolution : OUI / NON

Date de FIN : XX/XX/XXXX

Retard : =SI(B4="NON";DATEDIF(D4;AUJOURDHUI();"d"))

Mon problème :

- Quand j'ouvre mon classeur, le retard ce met à jour automatiquement (QUAND B4 = NON). J'aimerai que la date se mette à jour que quand je le décide, j'ai une idée pour ce problème : faire un bouton pour stocker la valeur aujourd'hui et que les calculs se fassent par rapport à cette date stocker dans une cellule quelconque

- Mais quand je suis sur YES, je veux arrêter de calculer le retard, donc figer la valeur et arrêter de calculer le retard et là je bloque

Merci pour vos futurs idées

Bonne journée

Bonjour

Pourquoi joindre un fichier :

Sur la charte du Forum

https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

Point 6 : • Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 300ko, n'hésitez pas à compresser vos fichiers).

Cordialement

Re Bonjour,

Voici un ficher exemple :

  • Je cherche à ce que le retard ne se mette pas automatiquement à jour (à cause de la formule "AUJOURDHUI")
  • Et je cherche aussi à lorsque je passe sur YES, ça sauvegarde la valeur actuelle et cesse de mettre à jour le retard

J'ai partiellement réussi avec une circulaire mais ça me plait pas trop....

Merci et bonne journée

131datediffprob.xlsx (9.58 Ko)

Bonjour,

Une proposition VBA à tester.

A l'ouverture du fichier, on vérifie les valeurs de la colonne A.

Si la valeur est "NO" on calcule l'écart de la la date du jour avec la date en colonne B.

Dans le cas contraire, on ne fait rien.

La procédure peut être lancée manuellement à partir de la feuillle.

ALT F11 pour ouvrir l'éditeur VBE - voir ThisWorbook et Module1.

Cdlt.

122datediffprob.xlsm (22.22 Ko)
Private Sub Workbook_Open()
    MAJ
End Sub
Private Sub CommandButton1_Click()
    MAJ
End Sub
Option Private Module

Public Sub MAJ()
Dim ws As Worksheet
Dim lRows As Long, rw As Long

    Application.ScreenUpdating = False

    Set ws = ActiveWorkbook.Worksheets("Feuil1")
    With ws
        lRows = .Cells(Rows.Count, 1).End(xlUp).Row
        For rw = 5 To lRows
            If .Cells(rw, 1) = "NO" Then .Cells(rw, 3) = Date - .Cells(rw, 2)
        Next rw
    End With

    Set ws = Nothing

End Sub

Bonjour Jean Eric,

C'est exactement ça, ça marche à merveille, exactement ce que je cherchais à faire.

Merci beaucoup pour votre temps.

Je vais essayer de l'adapter à mon tableau.

Une nouvelle fois merci

Bonjour,

Alors l'adaptation à ton tableau?

Pense à clore le sujet.

Cdlt.

Bonjour,

J'ai réussi à adopter le code sur mon tableau.

J'ai rajouter quelques lignes pour que les colonnes passent en "Standard" et actualiser la date en tête de document.

Mais sinon, le code pour gérer le délai avec YES/NO est sans faille. Merci beaucoup.

Voici le code si ça peut aider un prochain :

Sub MAJ()
Dim ws As Worksheet
Dim lRows As Long, rw As Long

    Application.ScreenUpdating = False

    Set ws = ActiveWorkbook.ActiveSheet

    With ws
        lRows = .Cells(Rows.Count, 1).End(xlUp).Row
        For rw = 4 To lRows
            If .Cells(rw, 2) = "NO" Then .Cells(rw, 11) = Date - .Cells(rw, 4)
        Next rw
    End With

    Set ws = Nothing

    Columns("K:K").Select
    Selection.NumberFormat = "General"
    Range("J1:K1").Select
    Selection = Date
    Selection.NumberFormat = "m/d/yyyy"

End Sub

Une nouvelle fois merci, bonne semaine à vous.

Rechercher des sujets similaires à "calcul delai retard conditions"