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 !
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
Exemple affectation données à la bonne période.xlsx
Ce tableau ne sert à rien. J'avais essayé de chercher la solution dans ce tableau. Mais le but est de renvoyer les données de la colonne i5:i10 vers B3:B14 au bon intervalle de période.
Bonjour,
Je vois que vous utilisez la fonction filtre mais j'attire votre attention sur le fait que les intervalles de périodes peuvent différentes entre le tableau 2 et 1.
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.
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.
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é, 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é.
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,
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.
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.
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.
- 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