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

Concaténer lignes sous condition

  • Initiateur de la discussion Initiateur de la discussion delia85
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

delia85

Guest
Bonjour,

Après plusieurs essais en essayant de trouver la solution à mon probléme, je m'en remets à vous.
J'ai un fichier avec 5 colonnes (Référence, texte1,texte2,texte3 et texte4).
Je cherche à regrouper les informations des colonnes texte en une seule cellule (séparées par un séparateur) et sur une seule ligne par numéro de référence.
Ce même numéro de référence se répète plusieurs fois en fonction de la présence de données dans les colonnes texte ou pas. C'est pourquoi, j'aimerais pouvoir aussi ne garder que les lignes dont les numéros de référence est unique et supprimer les autres.
Le fichier est plus parlant car pour finir mon explication finit par devenir compliquée!
Merci d'avance de votre coup de pouce !

AmicalementRegarde la pièce jointe concat-lignes.xls
 
Re : Concaténer lignes sous condition

Ce que j'en pense ?
Super !
Merci beaucoup. En voyant le code, je me dis en tant que néophyte, que j'ai du pain sur la planche.

Excellente journée !
 
Re : Concaténer lignes sous condition

Bonjour Banzai64,

Ta formule est la bienvenue. Elle affiche également le résultat escompté.
Merci encore !
Je profite de cette dynamique pour soumettre un cas un peu similaire (en partie).
Si ma question doit faire l'objet d'un nouveau post, dites-le moi et je le ferai.

J'ai un tableau dans lequel se trouvent dans la colonne A des références d'articles, en B les valeurs, en C les libellés correspondants aux valeurs. S'y ajoutent 10 colonnes (de 1 à 10) concernant les valeurs et 10 autres (de 11 à 20) concernant les libellés.
Sachant que col11 correspond a col1, col12 à col2, etc, comment faire pour que les données en colonne B se retrouvent dans les colonnes allant de col1 à col10 et que les données en colonne C se retrouvent dans les colonnes de col11 à col20, cela en affichant une seule et même ligne déterminée par une seule fois le numéro de référence.
Il ne doit pas y avoir de colonne vide entre les données de col1 à col10.
De même pour les colonnes de col11 à col20.
Je vous envoie le fichier en question.
J'ai essayé avec des formules mais je crois une fois de plus que seule vba (malheureusement pour moi !) peut résoudre la problématique.

Bonne journée à vous !
 

Pièces jointes

Re : Concaténer lignes sous condition

MERVEILLEUX !

Peut-être un peu exaltée comme réaction mais sincère.
Merci beaucoup pour la réponse et pour la disponibilité.

Très bonne journée !
 
Re : Concaténer lignes sous condition

Petite question encore.
Mon fichier réel comporte 20000 lignes. Comment adapter le code ? J'ai regardé mais je peine à tout comprendre.
 
Dernière modification par un modérateur:
Re : Concaténer lignes sous condition

Re

heuuuh
si je comprends et si c'est la même chose que le fichier que je t'ai fait
Tu avais 3 colonnes à regrouper et au résultat il y avait la colonne référence + 20 colonnes

55 colonnes à regrouper donneront la colonne référence + (54*10) 540 colonnes (trop pour 2003)
20 000 lignes j'ai un peu peur pour la mémoire

faudrait penser à une autre approche

Peux tu fournir un exemple exact (au point de vue colonne) et des données bidons de ton fichier pour voir si c'est le même principe que pour regrouper
 
Re : Concaténer lignes sous condition

J'ai modifié mon message quelques secondes après l'avoir envoyé, je me suis trompé. Le nombre de colonne reste toujours le même. Seul le nombre de ligne change.
Pour traiter 20000 lignes, je pense que ça ira. Je travaille sur des fichier plus volumineux.
Faut.il quand même que j'envoie un fichier ?
 
Re : Concaténer lignes sous condition

Re

Ouf

Sinon je penses que pour la mémoire cela devrait aller
Cela fera au maximum un tableau de 3 * 20000 = 60000 éléments

Attention : Dans ton fichier au moins une ligne vide en fin de ton tableau

Dans le code en rouge les modifications pour adapter à ton fichier

Code:
Option Explicit


Sub Regroupe()
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim Tablo()
Dim Lg As Integer
Dim Indice As Integer
[COLOR="Red"]Dim Cl As Integer[/COLOR]

  ReDim Tablo(1 To 21, 1 To 1)
  Lg = 2
  While Cells(Lg, 1) <> ""
    Indice = 0
    For I = 1 To UBound(Tablo, 2)                         ' vérif si la réf est déjà inscrite
      If Tablo(1, I) = Cells(Lg, 1) Then Indice = I
    Next I
    If Indice = 0 Then                                    ' La réf n'existe pas
      Indice = UBound(Tablo, 2)
      Tablo(1, Indice) = Cells(Lg, 1)
      ReDim Preserve Tablo(1 To 21, 1 To Indice + 1)
    End If
    
    If Cells(Lg, 2) <> "" Then                             ' Stocke la colonne B
      For K = 2 To 11
        If Tablo(K, Indice) = "" Then
          Tablo(K, Indice) = Cells(Lg, 2)
          Exit For
        End If
      Next K
    End If
    
    If Cells(Lg, 3) <> "" Then                             ' Stocke la colonne c
      For K = 12 To 21
        If Tablo(K, Indice) = "" Then
          Tablo(K, Indice) = Cells(Lg, 3)
          Exit For
        End If
      Next K
    End If
    
    Lg = Lg + 1
  Wend
  '
  ' Début de recopie du tableau
  '
 [COLOR="Red"] Lg = 1        ' Ligne 1
  Cl = 24       ' Colonne X (Mais en réalité on commencera toujours 1 colonne aprés)[/COLOR]
  For I = 1 To UBound(Tablo, 2) - 1
    For J = 1 To 21
      Cells(Lg, J [COLOR="Red"]+ Cl[/COLOR]) = Tablo(J, I)
    Next J
    Lg = Lg + 1
  Next I
End Sub
 
Re : Concaténer lignes sous condition

Merci. Comme ça roule très bien.
Quelques valeurs qui se transforment au format date (certaines valeurs sous forme de fraction)
Je ne vais pas abuser de ta patience, je corrigerai ça manuellement.

Encore merci et bonne fin de journée !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
38
Affichages
2 K
M
Réponses
2
Affichages
722
marcp70
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…