Liste complexe sur 1 seule cellule avec séparateur
Bonjour à toutes et tous,
Notamment avec la contribution du forum j'ai adapté une fonction de rechercheV qui me permet dans une seule cellule de lister avec séparateur (dans mon cas un point virgule) certaines données via critères.
Mais mon adaptation reste partielle car le résultat renvoi quand même le séparateur si les cellules balayées sont vides.
Pourriez vous m'aider à résoudre ce problème avec le fichier exemple joint ?
Merci
Je profite de ce post pour souhaiter aux lecteurs une très bonne année 2022
Bien à vous
Très cordialement
Hugues
Bonjour,
Problème avec l'ouverture de votre fichier, probablement dû au fait qu'il a été créé sur Mac. Ce qui fait que je ne vois pas la formule que vous avez écrit, et le code VBA ne me renseigne pas suffisamment sur les plages que vous saisissez. Alors je vous ai fait une macro qui extrait les villes spéciales comme vous le souhaitez.
Cdlt
Bonjour Arturo83,
Votre macro fonctionne parfaitement et je vous en remercie.
Oui je vous confirme que je suis sous office 365 MAC.
La formule est (quand utilisée avec données sous forme de tableau) à partir d"une fonction VBA : =SI([@Qui]="";"";Agences(C2;[Email];2;";")); ce qui rend cela dynamique en cas de rajout de ligne
Ou si les données n'était pas sous tableau : =SI(A2="";"";Agences(C2;C2:C296;2;";"))
La fonction est. :
Function Agences(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby Extendoffice
Dim i As Long
Dim xRet As String
For i = 1 To LookupRange.Columns(1).Cells.Count
If LookupRange.Cells(i, 1) = LookupValue Then
If xRet = "" Then
xRet = LookupRange.Cells(i, ColumnNumber) & Char
Else
xRet = xRet & "" & LookupRange.Cells(i, ColumnNumber) & Char
End If
End If
Next
Agences = Left(xRet, Len(xRet) - 1)
End Function
Est il possible que votre macro puisse être adaptée en fonction pour ne pas la limiter à des places définies en dur dans le code mais définies par variable comme dans la fonction de rechercheV ci dessus ?
En tous cas de nouveaux merci, car même si je voudrais aller encore plus loin dans mon jeu de données réelles (fonction avec variable) votre proposition me permet déjà d'avancer.
Merci
Cordialement
Hugues
Bonjour,
Ok, je comprends mieux pour la formule, alors voici la modif
Function Agences(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby Extendoffice
Dim i As Long
Dim xRet As String
For i = 1 To LookupRange.Columns(1).Cells.Count
If LookupRange.Cells(i, 1) = LookupValue Then
If xRet = "" Then
xRet = LookupRange.Cells(i, ColumnNumber) & Char
ElseIf LookupRange.Cells(i, ColumnNumber) & Char <> ";" Then: xRet = xRet & "" & LookupRange.Cells(i, ColumnNumber) & Char
End If
End If
Next
If Left(xRet, 1) = ";" Then
Agences = Mid(xRet, 2, Len(xRet) - 1)
Else
Agences = Mid(xRet, 1, Len(xRet) - 1)
End If
If Right(Agences, 1) = ";" Then Agences = Left(Agences, Len(Agences) - 1)
End Function
La formule en E2:
=SIERREUR(SI($A2="";"";Agences($C2;$C$2:$C$296;2;";"));"")
Cdlt
Bonjour Arturo83,
Un grand merci, votre répond solutionne toute ma problématique.
Bravo et merci
Très cordialement
Hugues