Faire des operations sur une feuille à partir de donnees venant de deux autres feuill

tigeline001

XLDnaute Occasionnel
Bonjour tout le monde
A partir de mon fichier j'ai 3 feuilles dans un même classeur ,ce que je veux c'est de parcourir la colonne Lieu de la feuille Feuil1 est egale avec lieu de la feuille Feuil2 si c correct je verifie si la colonne anomalie est egale à c et si c la cas je calcule dans la feuille Feuil3 le delai entre la date debut et la date fin de de la feuille 2 .
J'ai essayé en VBA mais ca me donne rien
j'ai utilisé ce code suivant:
Option Explicit
Private Function Indicateur_Test()
Dim sh1, c As Range
Dim sh2, p As Range
Dim MaValeur, MaValeur1 As String

'comparaison dans une feuille dans un seul classeur
Set sh1 = Sheets("Feuil1").Range("Lieu")
Set sh2 = Sheets("Feuil2").Range("R_Lieu")

For Each c In sh1
MaValeur = c.Value
For Each p In sh2
MaValeur1 = p.Value
If MaValeur = MaValeur1 Then
Call Calc_Diff(Sheets("Feuil2").Range("R_Date_Debut"), Sheets("Feuil2").Range("R_Date_fin"))
End If
Next
Next
End Function

Private Function Calc_Diff(ByVal maDate1 As Date, _
ByVal maDate2 As Date) As String

' Renvoie une chaine comme "2 ans 3 mois 18 jours ..."

Dim lAn As Long, lMois As Long, lJour As Long
Dim lHeure As Long, lMinute As Long, lSeconde As Long
Dim DateTemp As Date, Temp As String

' Remet les dates dans l'ordre si besoin : Date1 avant Date2
If maDate1 > maDate2 Then
DateTemp = maDate1
maDate1 = maDate2
maDate2 = DateTemp
End If

' L'inconvénient de DateDiff, c'est qu'il arrondi le résultat :
' Si on cherche le nombre d'années entre deux dates alors que _
ces dates ne sont séparées que de 11 mois, il renverra 1 an.
' Pour éviter cela, après avoir récupéré le nombre, on teste _
si la (Date1 + Nombre) > Date2, c'est qu'il y a eu un arrondi
' Dans ce cas, on enlève 1 et le tour est joué.

'--- Nombre d'années
lAn = DateDiff("yyyy", maDate1, maDate2)
If DateAdd("yyyy", lAn, maDate1) > maDate2 Then lAn = lAn - 1
' Décale la date d'autant
maDate1 = DateAdd("yyyy", lAn, maDate1)

'--- Nombre de mois
lMois = DateDiff("m", maDate1, maDate2)
If DateAdd("m", lMois, maDate1) > maDate2 Then lMois = lMois - 1
' Décale la date d'autant
maDate1 = DateAdd("m", lMois, maDate1)

'--- Nombre de jours
lJour = DateDiff("d", maDate1, maDate2)
If DateAdd("d", lJour, maDate1) > maDate2 Then lJour = lJour - 1
' Décale la date d'autant
maDate1 = DateAdd("d", lJour, maDate1)

'--- Nombre d'heures
lHeure = DateDiff("h", maDate1, maDate2)
If DateAdd("h", lHeure, maDate1) > maDate2 Then lHeure = lHeure - 1
' Décale la date d'autant
maDate1 = DateAdd("h", lHeure, maDate1)

'--- Nombre de minutes
lMinute = DateDiff("n", maDate1, maDate2)
If DateAdd("n", lMinute, maDate1) > maDate2 Then lMinute = lMinute - 1
' Décale la date d'autant
maDate1 = DateAdd("n", lMinute, maDate1)

'--- Nombre de secondes
lSeconde = DateDiff("s", maDate1, maDate2)

'Debug.Print lAn, lMois, lJour, lHeure, lMinute, lSeconde

' Mise en forme de la chaîne à renvoyer :
Temp = IIf(lAn > 0, CStr(lAn) & "an(s) ", "")
Temp = Temp & IIf(lMois > 0, CStr(lMois) & " mois ", "")
Temp = Temp & IIf(lJour > 0, CStr(lJour) & " jours ", "")
Temp = Temp & IIf(lHeure > 0, CStr(lHeure) & " heure(s) ", "")
Temp = Temp & IIf(lMinute > 0, CStr(lMinute) & "minute (s) ", "")
Temp = Temp & IIf(lSeconde > 0, CStr(lSeconde) & "seconde (s)", "")
Calc_Diff = Temp

End Function

J'ai besoin d'aide pour avoir la solution ou si vs pouvez me proposer D'autres solutions sans ou avec VBA


Merci
 

Pièces jointes

  • Rapport1.xlsm
    21.6 KB · Affichages: 33
Dernière modification par un modérateur:

Paritec

XLDnaute Barbatruc
Re : Faire des operations sur une feuille à partir de donnees venant de deux autres f

Bonjour Tigeline001 le forum
tu as prévu de dupliquer ton post combien de fois????????
j'ai répondu a ton message privé et j'ai envoyé la réponse sur l'autre post, mais maintenant je le regrette un peu car si tu te comportes comme cela ce n'est pas très sympa pour les gens qui veulent t'aider.
D'autant que sur l'autre post Paf:) t'a très gentiment répondu, et posé des questions auxquelles tu n'as pas répondu !!!!
pas content Papou
a+
Papou:)
 

Statistiques des forums

Discussions
312 153
Messages
2 085 800
Membres
102 980
dernier inscrit
brossadan