Concaténer plusieurs cellules?

CLAUDEF

XLDnaute Nouveau
Bonsoir à tous,

Je souhaiterais concaténer dans une cellule, des entetes de colonnes à partir de criteres. Exemple ce petit tableau joint, je souhaiterais que dans les cellules de la colonne 2008, je puisse cocaténer tous les noms ayant un repère 2008 et ceci par ligne.

Comment puis je faire

Merci à vous
 

Pièces jointes

  • Concatener.xls
    13.5 KB · Affichages: 198
  • Concatener.xls
    13.5 KB · Affichages: 202
  • Concatener.xls
    13.5 KB · Affichages: 199

bqtr

XLDnaute Accro
Re : Concaténer plusieurs cellules?

Bonsoir CLAUDEF,

Un solution par macro, par formule j'en suis incapable.

Code:
Sub concat()
Dim i As Long, k As Byte
Dim T As String

For i = 2 To Range("B65536").End(xlUp).Row
    For k = 2 To 5
      If Cells(i, k) = 2008 Then
        T = T & Cells(1, k) & ";"
        Cells(i, 6) = Left(T, Len(T) - 1)
      End If
    Next
  T = ""
Next

End Sub

Bonne soirée
 

Pièces jointes

  • Concatener.zip
    7.3 KB · Affichages: 89
  • Concatener.zip
    7.3 KB · Affichages: 92
  • Concatener.zip
    7.3 KB · Affichages: 90

CLAUDEF

XLDnaute Nouveau
Re : Concaténer plusieurs cellules?

Je viens de m'apercevoir que la solution en langage vba ne fonctionne pas si l'on modifie les dates, de plus il me faudrait quelques explications pour que je l'adapte à mon tableau.
Est ce que cela est trop demandé, d'avance merci
 

Banzai64

XLDnaute Accro
Re : Concaténer plusieurs cellules?

Bonsoir

Désolé bqtr j'ai cru que tu étais absent


Code:
Sub concat()
Dim i As Long, k As Byte
Dim T As String

For i = 2 To Range("B65536").End(xlUp).Row    ' De la ligne 2 jusqu'à la dernière ligne écrite
    For k = 2 To 5                            ' De la colonne 2 (A) à la colonne 5 (E)
      If Cells(i, k) = 2008 Then              ' Si le contenu de la cellule est égal à 2008
        T = T & Cells(1, k) & ";"             ' On rajoute le nom situé ligne 1 colonne K
        Cells(i, 6) = Left(T, Len(T) - 1)     ' On écrit ce que l'on a trouvé en ôtant le dernier ;
      End If
    Next
  T = ""                                       ' Réinitialise la variable
Next

End Sub
 
Dernière édition:

bqtr

XLDnaute Accro
Re : Concaténer plusieurs cellules?

Re,

Voici le code un peu modifié avec les explications.

Code:
Sub concat()
Dim i As Long, k As Byte
Dim T As String
'effacement de la colonne F
Range("F2:F" & Range("A65536").End(xlUp).Row).ClearContents
'boucle de la ligne 2 à la dernière linge non vide de la colonne B
For i = 2 To Range("B65536").End(xlUp).Row
    'boucle de la colonne B à D
    For k = 2 To 5
      'si la cellule est égale à la cellule F1 alors
      If Cells(i, k) = Cells(1, 6) Then
        'concaténation des valeurs
        T = T & Cells(1, k) & ";"
        ' suppression du dernier ;
        Cells(i, 6) = Left(T, Len(T) - 1)
      'fin du test
      End If
    'colonne suivante
    Next
  'remise à zéro de la variable T
  T = ""
'ligne suivante
Next

End Sub
Tu entres une année en F1 et tu lances la macro.

Cells(1,1) correspond à la cellule A1, Cells(1,2) à B1, Cells(1,3) à C1 .../...

Dans l'exemple Cells(i,k) prendra comme valeurs B2,C2,D2,E2 puis B3,C3,D3,E3 et ainsi de suite jusqu'à B7,C7,D7,E7.
I aura donc comme valeur 2 puis 3,4,5,6 et 7 (ligne de 2 à 7).
K aura comme valeur 2 puis 3,4 et 5 (colonne B à D).
La variable T (qui sert à concaténer les noms ) se remet à zéro à chaque changement de ligne.

A+

Salut Banzai64, y pas de soucis, l'union fait la force :)
 
Dernière édition:

CLAUDEF

XLDnaute Nouveau
Re : Concaténer plusieurs cellules?

Je suis scotché, je vais essayer sur mon tableau, j'avoue qu'il va falloir que je m'interesse de plus prés au vba, pourtant cela me semble trés compliqué. Qu'elle la meilleure façon de s'initier si ce n'est de venir sur ce forum, qui m'est bien utile je l'avoue
 

Discussions similaires

Réponses
2
Affichages
341
Réponses
14
Affichages
277

Statistiques des forums

Discussions
312 321
Messages
2 087 253
Membres
103 498
dernier inscrit
FAHDE