Excel: macro VBA

Signaler
Messages postés
2
Date d'inscription
vendredi 27 janvier 2012
Statut
Membre
Dernière intervention
30 janvier 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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)
remarque: le copy paste de l'exemple en bas le fait en deux ligne, mais le copy paste d'ici vers excel fonctionne bien.
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

7 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

intéresse toi à la fonction DateDiff() qui permet, entre autre, de renvoyer une différence en jour.

exemple de l'aide excel avec quelques corrections :

Dim TheDate As Date    ' Déclare les variables.
Dim Msg as String
TheDate = InputBox("Entrez une date")
If Is(TheDate)=True Then
   Msg = "Jours à compter d'aujourd'hui: " & DateDiff("j", Now, TheDate)
Else
   Msg = "Ce n'est pas une date valide ! "
End If
MsgBox Msg


A+
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
ooups!

Dim TheDate As Date    ' Déclare les variables.
Dim Msg as String
TheDate = InputBox("Entrez une date")
If IsDate(TheDate)=True Then
   Msg = "Jours à compter d'aujourd'hui: " & DateDiff("j", Now, TheDate)
Else
   Msg = "Ce n'est pas une date valide ! "
End If
MsgBox Msg


A+
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour, bigfish_le vrai

manque de quoi traiter les jours ouvrables ... (car je pense que là était la question et la difficulté)
Mais je ne lui ai pas répondu. Pourquoi ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Je sors de ma sieste et constate le silence de salimelwalfa (et de tous) .
Personne ne s'interroge sur la raison fondamentale de mon "pourquoi ?"
A salimelwalfa, donc :
Il faut apprendre à être très précis. Ta première question a en effet, telle que posée, au moins deux interprétations possibles. Je dis "au moins" car il y en a une troisième, selon le résultat que tu veux réellement atteindre.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
2
Date d'inscription
vendredi 27 janvier 2012
Statut
Membre
Dernière intervention
30 janvier 2012

Meri pour votre intérêt.
1- je voudrais calculer la variable diff qui est différence en jours ouvrables entre date1 et date 2 ave le fait que les dates sont sous le format (mm/jj/aaaa)
2- it étant lié à code_s elle s’incrémente à chaque retour en arrière de code.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bon,
je vais donc m'en tenir RIGOUREUSEMENT à ta demande, telle que formulée
Dim date1 As Date, date2 As Date, i As Integer
 date1 = #1/1/2012#
 date2 = #1/28/2012#
 For i = DateDiff("d", date1, date2) To 1 Step -1
   If CDate(WorksheetFunction.WorkDay(date1, i)) <= date2 Then Exit For
 Next
 MsgBox "il y a " & i & " jours ouvrables  entre le " & Format(date1, "dd/mm/yyyy") & " et le " & Format(date2, "dd/mm/yyyy")


Voilà donc.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Tout en devinant bien que ce n'est pas du tout ce que tu "voulais dire" (d'où mes deux remarques plus haut).
Voilà !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient