Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

job75

XLDnaute Barbatruc
Bonjour twenchany, JHA, Pierre,

Pas besoin de validation matricielle avec =JOINDRE.TEXTE(";";VRAI;BI2:CF2)

Le 2ème argument étant VRAI les cellules vides ou contenant un texte vide "" sont ignorées.

A+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…