=SIERREUR(SIERREUR(INDEX($I$5:$I$10;SOMME.SI.ENS($G$5:$G$10;$H$5:$H$10;A19;$J$5:$J$10;"<="&C19;$K$5:$K$10;">="&D19));INDEX($I$5:$I$10;SOMME.SI.ENS($G$5:$G$10;$H$5:$H$10;A19;$J$5:$J$10;">="&C19;$K$5:$K$10;"<="&D19)));"")
Bonjour Sylvanu,Bonjour Ach, Djidji,
Un essai en PJ avec une colonne supplémentaire et :
Mais à tester avec d'autres configurations pour vérifications.VB:=SIERREUR(SIERREUR(INDEX($I$5:$I$10;SOMME.SI.ENS($G$5:$G$10;$H$5:$H$10;A19;$J$5:$J$10;"<="&C19;$K$5:$K$10;">="&D19));INDEX($I$5:$I$10;SOMME.SI.ENS($G$5:$G$10;$H$5:$H$10;A19;$J$5:$J$10;">="&C19;$K$5:$K$10;"<="&D19)));"")
Bonjour Sylvanu,Re,
Le problème est que vous n'expliquez pas réellement et précisément les règles, il faut deviner.
J'en ai déduit quelques unes des exemples donnés mais ne suis pas sur de mon interprétation.
Désolé pour ma lenteur, je vais ce week-end essayer de bien comprendre la formule et de l'appilquer à mon fichier de travail. Je vous remercie du temps que vous avez consacré à me répondre et vous promet de revenir le plus vite possible vers vous,Re,
Dites au moins si la solution de la PJ #5 vous satisfait, sinon dites sur quelle ligne et pourquoi.
Bonjour,Re,
Dites au moins si la solution de la PJ #5 vous satisfait, sinon dites sur quelle ligne et pourquoi.
C'est votre hypothèse du post #8 qui se vérifie.je me rends compte qu’il est possible qu’une période de restructuration (tableau 1) puisse couvrir deux périodes du tableau 2,
Sub Affectation()
Application.ScreenUpdating = False ' On fige l'écran pour aller plus vite
T = Range("A2:D" & [A65500].End(xlUp).Row) ' Transfert tableau gauche dans un array
For L = 2 To [F65500].End(xlUp).Row ' Pour toutes les lignes du tableau de droite
CCO = Cells(L, "F") ' Acquisition des paramètrse tableau droit
Dfrom = Cells(L, "H")
Dto = Cells(L, "I")
For i = 1 To UBound(T) ' Pour chaque ligne array descriptif
If T(i, 1) = CCO Then ' Si c'est le bon CCO
' Si "Date To" est compris dans l'intervalle du tableau gauche
If Dto <= T(i, 4) And Dto >= T(i, 3) Then Cells(L, "G") = T(i, 2) ' Alors on récupère la Description
End If
Next i
Next L
End Sub
Merci pour les explications sur votre codage. L’exécution de la macro prend pas mal de temps chez moi. Mais les résultats sont correctes .Re,
Pas bien sur d'avoir tout bien compris l'explication du post #8.
Alors un essai en PJ avec cette macro :
A l'ouverture du fichier il vous faut valider les macros, si ce n'est déjà fait.VB:Sub Affectation() Application.ScreenUpdating = False ' On fige l'écran pour aller plus vite T = Range("A2:D" & [A65500].End(xlUp).Row) ' Transfert tableau gauche dans un array For L = 2 To [F65500].End(xlUp).Row ' Pour toutes les lignes du tableau de droite CCO = Cells(L, "F") ' Acquisition des paramètrse tableau droit Dfrom = Cells(L, "H") Dto = Cells(L, "I") For i = 1 To UBound(T) ' Pour chaque ligne array descriptif If T(i, 1) = CCO Then ' Si c'est le bon CCO ' Si "Date To" est compris dans l'intervalle du tableau gauche If Dto <= T(i, 4) And Dto >= T(i, 3) Then Cells(L, "G") = T(i, 2) ' Alors on récupère la Description End If Next i Next L End Sub
On appuie sur le bouton pour lancer la macro.
Idem que précédemment, si erreur donnez fichier avec lignes erronées.