[RESOLU] Concatener SI / Concatener sous conditions

BERTHET

XLDnaute Nouveau
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.
 

Pièces jointes

  • Concat_SI.xlsm
    15 KB · Affichages: 36
Dernière édition:

BERTHET

XLDnaute Nouveau
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 ...
 
Dernière édition:

vgendron

XLDnaute Barbatruc
un essai avec ceci
VB:
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
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 296
Membres
103 171
dernier inscrit
clemm