Concaténer un ensemble de cellules SI

Bonjour à tous,

Je travail sur un classeur excel qui exploite des données issues de saisies sur chantier.

Je souhaiterais concaténer automatiquement un ensemble de cellule en fonction d’un critère.
Exemple: si la cellule affiche « jaune » en A2, A5, A11 et A24 --> concaténer les cellules B2, B5, B11 et B25
Autre précision: mon fichier peut contenir une centaine de cellules correspondantes au critère et donc une centaine de cellule à concaténer…
Ci joint un fichier d’exemple pour faciliter la compréhension
concaténer l’ensemble si…xlsx (12,6 Ko)
Si vous avez la solution je suis preneur!!

Bonne journée à tous,

SB17

Salut SB17

Avec une fonction personnalisée en VBA
Function Compiler(sCrit As String, PlgSearch As Range)
Dim Cel As Range, sTmp As String
’ Calculer systématiquement la fonction
Application.Volatile
’ Initialiser le résultat
sTmp = «  »
’ Faire une boucle sur chaque cellule de couleur
For Each Cel In PlgSearch
’ Si même couleur, on compile
If Cel = sCrit Then sTmp = sTmp & Cel.Offset(0, 1)
Next Cel
Compiler = sTmp
End Function

Voici le fichierSB17_concaténer l’ensemble si.xlsm (20,1 Ko)

@+

1 J'aime

Super, merci pour cette fonction personnalisée Nono!

Et pour aller plus loin … si je souhaite faire la même action mais selon 2 critères?
Exemple: si la cellule affiche « jaune » en A2, A5, A11 et A24 ET « clair » en B2, B5, B11 et B24 --> concaténer les cellules C2, C5, C11 et C25

Pour compléter ma question : Fichier excel joint
SB17_concaténer l’ensemble si.xlsm (19,5 Ko)

Bonne journée :wink:

Bonjour SB17,

Voici le code :
Function Compiler(sCrit1 As String, sCrit2 As String, PlgSearch As Range)
Dim Cel As Range, sTmp As String
’ Calculer systématiquement la fonction
Application.Volatile
’ Initialiser le résultat
sTmp = «  »
’ Faire une boucle sur chaque cellule de couleur de la 1ère colonne
For Each Cel In PlgSearch.Resize(, 1)
’ Si même couleur colonne 1 et même couluer colonne 2 => on compile
If Cel = sCrit1 And Cel.Offset(0, 1) = sCrit2 Then
sTmp = sTmp & Cel.Offset(0, 2)
End If
Next Cel
Compiler = sTmp
End Function

Et le fichier :wink:
SB17_concaténer l’ensemble si v2.xlsm (20,4 Ko)