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!!
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
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
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