Microsoft 365 Grouper données plusieures colonnes dans une seule sans les vide avec séparateur

twenchany

XLDnaute Nouveau
Bonjour,
J'ai recherché dans le forum mais je n'ai pas trouvé la réponse à ma question (désolée d'avance si j'ai mal cherché).
J'ai un fichier avec des données textes sur 24 colonnes (BI à CF), toutes les celules ne sont pas remplies, je voudrais avoir en BH le contenu de toutes les colonnes séparées par un point virgule.
Exemple : BI4=Bleu
BJ4 à BU4=vide
BV4=jaune
BW4=vert
BZ4 = orange

Et donc en BH4 je voudrais avoir : Bleu; jaune; vert; orange.
Et bien sur cela doit être répliqué sur les 5000 lignes du fichier...

Est-ce possible ?
Merci d'avance pour votre aide.
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Je te conseille la formule joindre.texte()
Exemple à la volée
=joindre.texte(";";VRAI;SI($BI$2:$CF$2<>"";$BI$2:$CF$2;""))

Edit: Attention, c'est une formule matricielle à valider par Ctrl+Maj+Entrée

JHA
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Bonjour twenchany

macro à tester:
VB:
Sub report()
Application.ScreenUpdating = False
For col = 61 To 84
  If Cells(Rows.Count, col).End(xlUp).Row > derlin Then derlin = Cells(Rows.Count, col).End(xlUp).Row
Next
For n = 1 To derlin
  For col = 61 To 84
     If Cells(n, col) <> "" Then Cells(n, 60) = Cells(n, 60) & Cells(n, col) & ";"
  Next
Next
For n = Cells(Rows.Count, 60).End(xlUp).Row To 1 Step -1
  If Cells(n, 60) <> "" Then
     Cells(n, 60) = Left(Cells(n, 60), Len(Cells(n, 60)) - 1)
  Else
    Rows(n).Delete
  End If
Next
Application.ScreenUpdating = True
End Sub