Concaténation d'une colonne avec condition

Bonjour,

Je suis à la recherche d'une macro qui serait capable de concaténer les textes des cellules d'une colonne avec une condition sur la ligne dans une autre colonne... Je ne sais pas si je suis très claire....

Exemple :

Site 1 bla bla bla 1

Site 1 bla bla bla 2

Site 1 bla bla bla 3

Site 1 bla bla bla 4

Site 2 bla bla bla 5

Site 2 bla bla bla 6

Site 3 bla bla bla 7

Site 3 bla bla bla 8

Je voudrais pouvoir concaténer tous les textes "blablablas" à condition que ce soit Site 1 sélectionné et si je sélectionne Site 2 que ne ressortent que les blablas concernant ce site.

Pouvez-vous m'aider ?

Malgré plusieurs recherches je n'ai trouvé aucune macro satisfaisante...

Je vous remercie

Bonjour Lætitia, bonjour le forum,

Essaie Comme ça :

Public Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet
Dim TS As String 'déclare la variable TS (Texte Sélectionné)
Dim TC As Variant 'déclare la variable TC (Tableu de Cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim T As String 'déclare la variable T (Texte)

Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
TS = ActiveCell.Value 'définit le texte sélectionné TS
TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
For I = 1 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau de cellules TC
    'si la valeur ligne I colonne 1 est égale à TS, définit le texte T
    If TC(I, 1).Value = TS Then T = IIf(T = "", TC(I, 2), T & " " & TC(I, 2))
Next I 'prochaine ligne de la boucle
MsgBox T 'affiche T dans un message (je ne sais pas ce que tu veux en faire...)
End Sub

Merci ThauThème pour ta réponse

J’avoue ne pas avoir très bien compris ta macro malgré les explications, désolée je ne suis pas très douée en macro… Je vais tenter de développer un peu plus ma demande (je ne peux fournir le fichier malheureusement).

J’ai un onglet « Export Global » les données à concaténer sont dans la colonne S et la valeur à chercher est dans la colonne C.

Sachant que j’ai un autre onglet « Analyse sites » ou la valeur à rechercher est inscrite en B1.

Et je voudrais que le résultat soit concaténer en A50 de l’onglet « Analyse sites »

Donc quand je sélectionne Site 1 (en B1 de l’onglet Analyse sites) j’aimerais qu’apparaisse en A50 du même onglet la concaténation de tous les textes liés à Site 1 de la colonne S de l’onglet « Export Global »…. Ca m’a l’air tellement complexe…

Re,

Alors essaie comme ça (j'ai séparé chaque donnée récupérée par un espace mais on peut changer si ça ne convient pas) :

Public Sub Macro1()
Dim E As Worksheet 'déclare la variable E (onglet Export Global)
Dim A As Worksheet 'déclare la variable A (onglet Analyse Sites)
Dim VR As String 'déclare la variable VR (Valeur Recherchée)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim T As String 'déclare la variable T (Texte)

Set E = Sheets("Export Global") 'définit l'onglet E
Set A = Sheets("Analyse Sites") 'définit l'onglet A
VR = A.Range("B1").Value 'définit la valeur recherchée VR
TC = E.Range("A1").CurrentRegion 'définit le tableau de cellules TC
For I = 1 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau de cellules TC
   'si la valeur ligne I colonne 3 est égale à VR, définit le texte T
   If TC(I, 3).Value = VR Then T = IIf(T = "", TC(I, 19), T & " " & TC(I, 19))
Next I 'prochaine ligne de la boucle
A.Range("A50").Value = T 'affiche T dans la cellule A50 de l'onglet A
End Sub

Encore merci du temps que tu me consacres.

J'ai une erreur sur la macro à ce niveau "If TC(I, 3).Value = VR Then"

Re,

C'est nornal, c'est de ma faute, désolé ! Il ne faut pas le Value...

Remplace par :

If TC(I, 3) = VR Then

Alors là un grand MERCI

C'est tout à fait ça et ça marche ! Tu peux pas savoir comme ça m'aide !!!


J'vais juste me permettre d'abuser un peu plus.

Sais-tu, s'il te plait, me dire comment faire pour que la macro se lance automatiquement quand la cellule B1 change ?

J'ai trouvé ma réponse :

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Application.Intersect(Target, Range("B1")) Is Nothing Then
   Macro1
 End If
End Sub

Encore merci !

Rechercher des sujets similaires à "concatenation colonne condition"