Comparer des dates et calculer le délai

Bonsoir,

Je travaille sur un projet qui necessite un programme Vba, j'ai déja réaliser une partie de mon programme mais j'ai deux points bloquants

le premier : Je souhaite ajouter un programme qui me calcule le délai entre les dates de la colonne F "Date Prog" et la date d'aujourd'hui, met le résultat dans la colonne H et me dire est ce que ce délai est supérieur à 10jours, si oui : "OK" dans la colonne I si non : "Délai non respecté".

Le deuxième : J'ai un programme qui me permet d'aller chercher un fichier l'ouvrir et copier des données d'une feuille dans un autre classeur, mais ce que je veux c'est que mon programme prend en compte la condition suivante, par exemple :

si le nom du fichier selectionné contient 14 alors l'ouvrir et copier la feuille "SORTIE PANAM", la coller dans un autre classeur puis sur la deuxième feuille copier et coller les lignes des semaines S+4 (15, 16, 17, 18)

Si le nom du fichier selectionné contient 15 alors faire la méme chose mais avec les lignes S+4 (16,17,18,19)

SVP aidez moi!! je ne m'en sors pas

Salut,

Je réponds déjà à ta première question. Dans le fichier ci-joint, à chaque fois que tu modifies une cellule de la colonne F de la Feuil2, les colonnes H et I sont réactualisées.

Je n'ai pas compris s'il fallait calculer date du jour - date en colonne F ou le contraire, mais on peut adapter cela si l'idée de base te convient.

Ensuite, comme ces calculs sont réactualisés uniquement en cas de modification de la colonne F, il faudra voir s'il faut également les réactualiser une fois par jour au minimum (par exemple si tu consultes ce fichier quelques jours après avoir modifié pour la dernière fois la colonne F, auquel cas les données en colonnes H et I ne seront plus à jour). Je pensais par exemple réactualiser ces données à chaque ouverture du fichier afin qu'elles soient à jour à chaque consultation + à chaque modification.

Lorsque tout ceci sera réglé, on pourra voir pour ton autre problème.

Cordialement.

110prg-comparer-v2.zip (272.98 Ko)

Salut Yvouille,

Merci pour ton aide,

Ce que je veux c'est date en colonne F -Date d'aujourd'hui, l'idée me convient mais peux-tu associer un bouton commande à cette macro stp ?

Je consulte et je change les données de ce fichier une fois par semaine, je crois que la mise à jour automatique n'est pas necessaire.

Cordialement

[quote=":D Ikram :D"]mais peux-tu associer un bouton commande à cette macro stp ?[/quote]En exagérant un peu, c'est comme si on t'offrait une Porsche et que tu disais : J'aurais préféré une deux chevaux

Voici une fichier avec les modifications désirées.

Amicalement.

129prg-comparer-v3.zip (273.00 Ko)

Bonjour Yvouille,

Merci beaucoup mon premier problème est résolu,

Aurais-tu une idée pour résoudre le deuxième ?

Cdlt

Ah oui, c’est vrai que tu as deux problèmes Tu prends une deuxième 2CV ou tu prends la Posche, cette fois ?

Après avoir regardé en vitesse, je ne vois nulle part dans les codes de ton fichier de passage qui ouvrirait un autre fichier (j’ai cherché avec le mot ‘open’, mais sans succès).

S’agit-il alors d’un autre fichier ? Si oui, il faudrait le fournir (si possible avec un modèle de fichier ‘visité’ également).

A te relire.

Le fichier est trop gros impossible de l'ajouter,

Est-ce que toutes les feuilles sont utiles à la démonstration du problème ? Si non, tu peux les effacer

Est-ce qu'une feuille avec un nombre énorme de ligne pourrait être réduite à 10 lignes représentative ?

Est-ce qu'une mise en forme sur 100'000 lignes alourdi inutilement le fichier alors qu'il n'y a que 250 lignes d'utilisées ?

Est-ce que le fichier ne peut pas être compressé (clic-droit sur le nom du fichier dans l'explorateur / Envoyer vers / Dossier compressé) ?

Si après tout ça le fichier fait toujours plus de 300 Ko, il faut passer par le site C-joint http://www.cjoint.com/

Si ça ne passe toujours pas, il y a d'autres solutions.

A te relire.

c joint 2013

J'ai utilisé le site C-joint

Bonjour tous le monde,

je travail sur un programme avec quelques ressemblance avec celui la.

Yvouille j'ai une question pour toi, dans le programme que tu as créer, dans la condition

If Range("H" & i) >= 10 Then

comme on sache si on parle des heures ou des jours? (je dois mettre la même chose avec 80jours).

Merci

@+

Bonjour tout le monde,

@ otmano

Excel calcul les jours et heures en unité ‘Jour’ et en numérotant les jours depuis le 1er janvier 1900 (à moins que tu n’aies choisi l’option de calculer depuis 1904). Donc si tu précises qu’il faut calculer le 20 mars 2014 mois le 20 mars 1961, Excel calcule en arrière-plan 41718 – 22370 = 19348 (j’ai donc aujourd’hui 19348 jours puisque c’est mon anniversaire, sans blague ). Si tu ne me crois pas, tu changes le format de tes cellules de dates en ‘Nombre’. Donc si tu veux calculer 80 jours, tu remplaces 10 par 80.

Avec la même unité, les heures, secondes etc., sont indiquées par des chiffres après la virgule, donc le 20 mars 2014 à midi ça donne 41718,5. Si nécessaire, tu peux utiliser de tels chiffres dans tes macros.

@ Ikram

Je regarde ton fichier cette fin de semaine.

Bonnes salutations à tous deux.

@Yvouille

Merci pour ta réponse, sauf que je n'ai pas compris tous

dans une macro, comment en intégre la condition (Si la différence entre date 1 et date 2 est < 80jours ?)

MErci a toi

Bonsoir,

@ otmano

Ce n’est pas évident de tenir deux discussions sur le même fil. Ouvre s’il te plait ton propre fil afin de poser ta question. Mais je te conseille de joindre immédiatement un fichier avec ton code. Lorsque tu auras ouvert ta discussion, si personne d’autre ne te répond après 1 jour, tu peux m’écrire un message privé et je viendrai voir ta demande.

@ Ikram

J’ai commencé à regarder ton fichier, mais ce n’est pas évident. Je continue demain ou après-demain.

Bonne soirée.

Salut,

Pour l’instant, lorsque je lance ta macro ‘CommandButton1_Click’ du UserForm1, ça bloque chez moi avec l’indication qu’il y a trop de données à traiter et une capacité insuffisante à disposition.

Je n’ai pas trop cherché à comprendre ce problème, puisqu’apparemment ce n’est pas ton souci.

[quote=":D Ikram :D"]J'ai un programme qui me permet d'aller chercher un fichier l'ouvrir et copier des données d'une feuille dans un autre classeur, mais ce que je veux c'est que mon programme prend en compte la condition suivante, par exemple :

si le nom du fichier selectionné contient 14 alors l'ouvrir et copier la feuille "SORTIE PANAM", la coller dans un autre classeur puis sur la deuxième feuille copier et coller les lignes des semaines S+4 (15, 16, 17, 18)

Si le nom du fichier selectionné contient 15 alors faire la méme chose mais avec les lignes S+4 (16,17,18,19)[/quote]

Dans la même macro que celle indiquée ci-dessus, tu as le passage

    If Not Estlà("SORTIE PANAM") Then
        MsgBox "La feuille ASS n'existe pas dans ce classeur", , "Feuille SORTIE PANAM absente": wbks.Close 0: Exit Sub
    Else
        wbks.Sheets("SORTIE PANAM").Cells.Copy wbkc.Sheets("Feuil2").Cells
    End If

J’en conclu que tu désires placer une condition complémentaire si la feuille recherchée existe, c’est-à-dire si ton code passe par la deuxième possibilité de la condition IF ci-dessus, ou en d’autres mots si ça passe par ELSE. Voici alors une démonstration de ce qui est possible, pour le même passage de la macro :

    If Not Estlà("SORTIE PANAM") Then
        MsgBox "La feuille ASS n'existe pas dans ce classeur", , "Feuille SORTIE PANAM absente": wbks.Close 0: Exit Sub
    Else
         'wbks.Sheets("SORTIE PANAM").Cells.Copy wbkc.Sheets("Feuil2").Cells
         If Mid(wbks.Name, 20, 2) = "14" Then
            MsgBox "Le nom du fichier sélectionné contient 14"
        Else
        If Mid(wbks.Name, 20, 2) = "15" Then
            MsgBox "Le nom du fichier sélectionné contient 15"
        Else
            MsgBox "Le nom du fichier sélectionné contient 16"
        End If
        End If
    End If

A toi de remplacer mes 3 nouveaux MsgBox par tes propres codes.

Cordialement.

Bonjour Yvouille, j'espère que tu passes un bon weekend

Tout à fait je veux ajouter une condition dans ELSE,

If Mid(wbks.Name, 20, 2) = "14" Then

MsgBox "Le nom du fichier sélectionné contient 14"

Après ces deux lignes je veux que mon programme me copie que les lignes dont la colonne (F) contient (15, 16, 17 et 18)

Cdlt

Salut,

Au moment où la macro arrive sur le passage que tu as collé dans ton dernier message, le fichier de base 'Ikram-Macro' est ouvert en arrière-plan et le fichier visité (par exemple ‘MODELPROG_CARO_SLE_14’) est ouvert et visible à l’écran.

Ces deux fichiers comportent des références à 4 ou 5 chiffres dans leur colonne F, mais ni l'un ni l'autre des nombres 14, 15 ou 16.

Peux-tu alors me préciser dans quel fichier, sur quelle feuille, dans quelle colonne il faut contrôler la présence de ces 14, 15 ou 16 ? Je présume dans le fichier visité, puisque tu me dis que de cette condition dépend le fait de copier-coller ou non les lignes.

Et peux-tu encore me dire où tu désires coller les données copiées ?

Evite de dire ‘je veux’ ; ‘je voudrais’ me semble plus approprié.

A te relire.

Mince Je me suis tromptée de colonne

C'est dans le fichier visité ( Par ex : ‘MODELPROG_CARO_SLE_14’), la feuille "SORTIE PANAM et dans la colonne I ( S Prog),

Je voudrais coller ces données sur la deuxième feuille du classeur "Ikram-Macro"

Cdlt

Re-bonjour,

Dans le fichier ci-joint, le code modifié devrait réaliser ce que tu désires.

La macro dure – pour les fichiers modèles que tu m’as fournis - environ 15 secondes sur un PC peu puissant.

A te relire.

Ca marche ! =) super merci beaucouuuuup

BOnsoir tous le monde

Ok Yvouille je fais ça

@+

Rechercher des sujets similaires à "comparer dates calculer delai"