Concaténer texte et sous total

Bonjour,

le sujet du post peut sembler obscur, mais je vais m'expliquer.

Je voudrais opérer une concaténation de plusieurs cellules (en colonnes) dès lors que j'ai un changement de valeur dans une autre colonne.

ColA ColB

Pierre A

Pierre B

Pierre C

Martine G

Martine B

Alain A

Bernard E

Bernard A

Bernard U

Bernard C

Bernard B

Voilà, dès que j'ai un changement dans ma colonne A (donc que je change de prénom), je voudrais faire apparaitre une concaténation des cellules de la colonne B dans la colonne C. Comme la fonction sous total, mais avec une concaténation au lieu de texte.

Ainsi j'aurai directement ceci dans deux autres colonnes:

Col D Col E

Pierre ABC

Martine GB

Alain A

Bernard EAUCB

Merci à ceux qui pourrait me filer un coup de main

35exemple.xlsx (8.91 Ko)

Bonjour,

En VBA, à mettre dans le module de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Plage As Range
    Dim Cel As Range
    Dim Texte As String
    Dim DerLgn As Long

    If Target.Count <> 1 Then Exit Sub

    'si changement en colonne A
    If Target.Column = 1 Then

        'défini la plage de recherche en colonne A
        With ActiveSheet

            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))

        End With

        'parcour la plage et concatène les lettres de la colonne B
        'en face du mot trouvé
        For Each Cel In Plage

            If Cel = Target Then

                Texte = Texte & Cel.Offset(, 1)

            End If

        Next Cel

        'inscrit en colonne D et E
        With ActiveSheet

            DerLgn = .Cells(.Rows.Count, 4).End(xlUp).Row + 1
            .Range("E" & DerLgn) = Texte
            .Range("D" & DerLgn) = Target

        End With

    End If

End Sub

Hervé.

Je vous remercie Hervé.

Alors ne connaissant rien à VBA, j'ai fouillé dans excel, et trouvé "Visual Basic pour Applications", je suppose que c'est ca. A gauche j'ai trouvé ma feuille excel ouverte, clic droit insertion-module. J'ai collé le code. Enregistré la macro. Mais quand je veux l’exécuter dans la feuille, il ne se passe juste rien. Pourtant je la trouve dans mon menu déroulant de macro disponible, mais je fais exécuter, et rien.

Les formules, je connais. Mais alors le VBA, ca me dépasse.

Merci tout de même !

Bonsoir,

Une proposition VBA (objet dictionary) et un bouton de commande.

J'ai mis un séparateur, la virgule, pour différencier les prénoms (que l'on peut supprimer à lusage)

Private Sub cmdTraitement_Click()
Dim Ws As Worksheet
Dim Mondico
Dim c As Range
    Application.ScreenUpdating = False
    Set Ws = Worksheets("Feuil2")
    Set Mondico = CreateObject("Scripting.Dictionary")
    With Ws
        For Each c In .Range("A1", [A1000].End(xlUp))
        If Not Mondico.exists(c.Value) Then
            Mondico(c.Value) = c.Offset(, 1).Value
        Else
            Mondico(c.Value) = Mondico(c.Value) & "," & c.Offset(, 1).Value
        End If
     Next c
        [D1].Resize(Mondico.Count, 1) = Application.Transpose(Mondico.keys)
        [E1].Resize(Mondico.Count, 1) = Application.Transpose(Mondico.items)
    End With
    Set Ws = Nothing
End Sub

Superbe, merci beaucoup !

Re,

Quand tu es dans le VBE, tu as à gauche et en haut une petite fenêtre avec les icônes des feuilles et du classeur (Feuil1, Feuil2, etc.. et ThisWorkbook) et bien juste au dessus de cette fenêtre, tu as 3 icônes et l'une d'entre elles (la plus à gauche) te permet d'afficher le module (endroit où tu mets tes lignes de code que le compilateur va lire) de la feuille sélectionnée (tu survole et le commentaire s'affiche). Une fois que tu as cliqué sur le bouton, une zone de texte s'affiche dans la partie vide et c'est là que tu colle le code que je t'ai posté. Ensuite, tu retourne dans la feuille Excel en question et tu effectue une modif d'un nom dans la colonne A. De ce fait, ça se fera de façon automatique.

Hervé.

Re,

Bonsoir These,

Peux-tu t'assurer que ton code prenne en compte les modifications apportées en colonne B?

Cdlt.

Rechercher des sujets similaires à "concatener texte total"