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 en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut calcul en VBA
    Bonjour les ami(e)s,
    J'aurai besoin de votre expertise dans ce domaine dont (j'avoue) je ne suis pas fort.
    je dois faire un bouton qui active une macro pour sortir quelques calcul sur l'exemple (voir ci-dessous).

    1-la difficulté c'est le calul de la variable diff , qui est la différence en jours ouvrables entre date1 et date 2 (mm/jj/aaaa) !!!

    2-aussi un deuxième défi, incrémenté la variable it (par défaut égale à 1) du code_s concerné à chaque retour de la variable code (parcours normal de code de 1 à 8) un retour vers l'arrière est synonyme d'une incrémentation de la variable it du code_s)

    Je me creuse les cellules grises mais je ne trouve pas. help.

    ID	date1	          date2	     code_s	  code     diff      it
    1	12/10/2011	  12/10/2011	1	  1
    1	12/10/2011	  12/10/2011	1	  2
    1	12/10/2011	  13/10/2011	1	  3
    1	13/10/2011	  14/10/2011	2	  4
    1	14/10/2011	  15/10/2011	1	  1
    1	15/10/2011	  16/10/2011	1	  3
    1	16/10/2011	  17/10/2011	2	  4
    1	17/10/2011	  17/10/2011	2	  5
    1	17/10/2011	  17/10/2011	2	  6
    1	18/10/2011	  19/10/2011	3	  7
    1	19/10/2011	  20/10/2011	3	  8
    2	21/10/2011	  21/10/2011	1	  1
    2	21/10/2011	  22/10/2011	1	  2
    2	22/10/2011	  23/10/2011	1	  3	
    2	23/10/2011	  24/10/2011	2	  4	
    2	24/10/2011	  25/10/2011	2	  5	
    2	25/10/2011	  27/10/2011	2	  6	
    2	27/10/2011	  28/10/2011	3	  7	
    2	28/10/2011	  29/10/2011	3	  8

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Pour le premier point, dans la fenêtre VBE, clique sur les menus "Outils", "Références" et coche la référence "atpvbaen.xls. Vérifie auparavant que tu as bien coché les macros complémentaires : "Utilitaire d'analyse" et "Utilitaire d'analyse VBA". La macro est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    For Each c In Range([B2], Cells(Rows.Count, 2).End(xlUp))
        c.Offset(, 4) = networkdays(c.Value, c.Offset(, 1).Value)
    Next c
    End Sub
    "networkdays" correspond à la fonction NB.JOURS.OUVRES. Tu peux donc ajouter une plage pour les jours fériés.
    Note que tes dates sont au format jj/mm/aaaa, mais que le format n'est qu'une question d'affichage.
    Pour le second point, je n'ai pas compris. Peux-tu détailler s'il te plait.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    Merci Daniel. C pour ton aide.
    pour le point 2.

    La variable diff est la somme des délais de code_s càd ( ∑(date2 - date1) pour chaque code_s).

    it étant lié à code_s elle égale à 1 par défaut et s’incrémente à chaque fois que code n’avance pas mais récule.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    La variable diff est la somme des délais de code_s càd ( ∑(date2 - date1) pour chaque code_s).
    Le même code_s étant présent sur plusieurs lignes, on va retrouver plusieurs fois la même valeur sur plusieurs lignes.

    it étant lié à code_s elle égale à 1 par défaut et s’incrémente à chaque fois que code n’avance pas mais récule.
    Donne-moi, s'il te plait, un exemple concret, ce n'est pas tout à fait clair pour moi.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    Daniel,
    l'exemple dans la table au-dessous décrit bien ma situation.
    En effet code_s peut être la même pour plusieurs variable code.
    it est le compteur de chaque retour en arrière de la variable de code dans un même code_s.

    Merci pour ton aide.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    l'exemple dans la table au-dessous décrit bien ma situation
    Joins cette table s'il te plait.

  7. #7
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour _debutant, Daniel.C, le forum,

    Je reformule pour être sûr d’avoir bien compris.

    code diff it calculé :
    Pour chaque ID,
    Initialement, la variable code diff it est égale à 1.
    A chaque incrément de ligne, code diff it est incrémentée de 1 si la variation de code_s est positive ou nulle. Dans le cas contraire (variation négative de code_s ), code diff it est réinitialisée à 1.
    Je traduis cela par la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A2=A1;SI(D2-D1<0;1;E1+1);1)
    Si A2=A1 : si l'ID est identique
    Si D2-D1<0 ;1 : si la variation est négative je réinitialise à 1
    E1+1 : sinon, j'incrémente de 1
    ; 1 : si l’ID est différent, je réinitialise à 1.

    Par contre, j'ai considéré qu'il y avait une erreur dans la liste entre la date1 du 14/10/2011 et celle du 15/10/2011 car le code diff it passe de 1 à 3 (incrément de 2).

    Cordialement.

Discussions similaires

  1. [VBA-E] Calcul fonction VBA-excel
    Par I folima Elda dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/04/2008, 20h39
  2. Champs calculés en VBA
    Par Lorenzogazier dans le forum IHM
    Réponses: 2
    Dernier message: 08/02/2008, 09h58
  3. Pb Automatisation calcul "function" vba
    Par alexbabey dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/01/2008, 10h28
  4. calcul en VBA
    Par popofpopof dans le forum VBA Access
    Réponses: 4
    Dernier message: 20/08/2007, 07h41
  5. Réponses: 3
    Dernier message: 23/01/2006, 10h10

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