XL 2021 Affection d'une donnée liée à un intervalle de périodes à d'autres intervalles de périodes

  • Initiateur de la discussion Initiateur de la discussion ACH
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ACH

XLDnaute Nouveau
Bonjour,

Des services ont eu plusieurs appellations à différentes périodes (Tableau 2) et j'aimerai qu'en fonction du service (ex : 10000) l'on puisse affecter l'appellation (ex: II lo 22) à la période correspondante dans le tableau 1. Je soupçonne l'utilisation d'un equiv avec un index mais pour le traitement des périodes c'est plus délicat.
Je joins un fichier pour vous illustrer mon exemple.

Merci d'avance pour vos commentaires,

Ach
 

Pièces jointes

Bonjour Ach, Djidji,
Un essai en PJ avec une colonne supplémentaire et :
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)));"")
Mais à tester avec d'autres configurations pour vérifications.
 

Pièces jointes

Bonjour Ach, Djidji,
Un essai en PJ avec une colonne supplémentaire et :
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)));"")
Mais à tester avec d'autres configurations pour vérifications.
Bonjour Sylvanu,

Merci pour votre aide, il me faut un moment pour comprendre cette formule imbriquée. Dès que j'aurai compris et fais les tests je reviendrai vers vous.

Encore merci,

Ach
 
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.
Bonjour Sylvanu,

Désolé, si j'ai été vague dans mes explications. Je vais essayer d'être exhaustif.

La table 2 accueille le Masterdata des bureaux.

Exemple : le bureau dont le centre de coût 10000 ne change jamais peut subir différentes appellations à différentes périodes. Exemple : L’appellation « II hg 45 » de novembre 2014 à décembre 2016 et l’appellation « II lo 22 » de janvier 2017 à décembre 2021. Ce tableau subira des changements liés à la création de nouveaux centres de coûts avec des périodes futures reprenant d’autres appellations.

Le tableau 1 quant à lui va reprendre des périodes de grandes restructurations de la société. Ces périodes seront identiques pour tous les centres de coûts et pourront également accueillir d’autres périodes futures concernant des réorganisations futures.

Le but est que le tableau 1 reprenne les bonnes appellations du tableau 2 dans les intervalles de périodes adéquates des restructurations. Cependant, en vous expliquant le problème, je me rends compte qu’il est possible qu’une période de restructuration (tableau 1) puisse couvrir deux périodes du tableau 2, auquel cas j’imagine qu’il faudrait une deuxième colonne dans le tableau 1 pour répondre à cette éventualité.

Merci,

Ach
 
Re,
Dites au moins si la solution de la PJ #5 vous satisfait, sinon dites sur quelle ligne et pourquoi.
Bonjour,

Je viens de copier la formule proposée et il semble y avoir des incohérences (cnf pièces jointes) que j'ai surligné en rouge. Je vais encore chercher mais votre aide est la bienvenue.

Encore merci pour votre proposition

Ach
 

Pièces jointes

Bonjour,
je me rends compte qu’il est possible qu’une période de restructuration (tableau 1) puisse couvrir deux périodes du tableau 2,
C'est votre hypothèse du post #8 qui se vérifie.
Cette hypothèse n'était pas connue de la PJ #5, et n'en tient évidemment pas compte.
Mais là je ne vois pas comment contourner le problème simplement.
Hormis en VBA, vous acceptez le VBA ?
 
Re,
Pas bien sur d'avoir tout bien compris l'explication du post #8.
Alors un essai en PJ avec cette macro :
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
A l'ouverture du fichier il vous faut valider les macros, si ce n'est déjà fait.
On appuie sur le bouton pour lancer la macro.

Idem que précédemment, si erreur donnez fichier avec lignes erronées.
 

Pièces jointes

Re,
Pas bien sur d'avoir tout bien compris l'explication du post #8.
Alors un essai en PJ avec cette macro :
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
A l'ouverture du fichier il vous faut valider les macros, si ce n'est déjà fait.
On appuie sur le bouton pour lancer la macro.

Idem que précédemment, si erreur donnez fichier avec lignes erronées.
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 .

Un tout grand merci

Ach
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour