Bonjour,
Suite à des recherches concernant la possibilité de faire un "concatener SI" comme l'on fait des "Sommes SI", j'ai trouvé une réponse sur ce forum datant de 2004 que j'ai adaptée mais qui ne semble pas fonctionner dans mon cas.
Ce que je veux pouvoir faire : concatener les cellules de la ligne R2 (qui comporte de nombreuses colonnes qui peuvent varier dans le temps) en fonction des valeurs contenu dans la ligne R1 (si elles sont supérieure à une valeur Rech). Il me faut donc un module paramétrable puisqu'il n'existe pas de formule dans excel qui corresponde au besoin.
Le module que j'ai trouvé est adapté à la même problématique mais pour concatener suivant des colonnes. Je l'ai donc modifié ce qui donne ceci :
Function CONCAT_SI(R1 As Range, Rech As Range, R2 As Range)
Dim CL As Range
Dim CHN As String
For Each CL In R1
If CL.Value >= Rech.Value Then
CHN = CHN & " " & Cells(R2.Row, CL.Column).Value
End If
Next
CONCAT_SI = Trim(CHN)
End Function
et du coup j'utilise dans mon classeur une formule du type : =CONCAT_SI($C4:$AH4;$N$1;$C$2:$AH$2)
Si vous avez une suggestion qui expliquerais pour quelle raison cela ne fonctionne pas, je suis preneur.
Nota : En préparant un fichier pour illustrer ma problématique, j'ai constaté que cela fonctionne lorsque les données et la formule sont sur la même feuille mais pas quand elles sont sur une feuille différente.
Merci d'avance pour vos suggestions.
PS : si vous avez une autre solution, je suis preneur également.
Bonsoir, j'ai ajouté un fichier exemple avec les données en feuil2 et le résultat attendu en feuil1.
Je précise que j'ai constaté que cela fonctionne lorsque les données et la formule sont sur la même feuille mais pas quand elles sont sur des feuilles différentes.
Merci d'avance.
PS : je précise que je travaille en désactivant les calculs automatiques car mon fichier est trop "lourd" pour que ce soit supportable et par ailleurs la formule semble fonctionner une fois sur deux ...
Function CONCAT_SI(R1 As Range, Rech As Range, R2 As Range)
Dim CL As Range
Dim CHN As String
i = 1
For Each CL In R1
If CL.Value >= Rech.Value Then
CHN = CHN & " " & R2.Item(1, i)
End If
i = i + 1
Next
CONCAT_SI = Trim(CHN)
End Function