Creation de macro pour concatenation si cellule d'une colonne identique

Merci d'avance,

FLO

Un peu court, jeune homme ! comme a déjà dit quelqu'un...

Bonne soirée.

Bonjour hommaisflo, le forum,

comme le dit si bien MFerrand (qui le tient lui-même de quelqu'un ) : « Un peu court, jeune homme ! » ; ou alors, en supposant que tout l'énoncé de ton exo est contenu dans le titre de ton sujet, je propose ceci à tout hasard :

Sub Essai()
  If [A1] = [B1] Then [C1] = [A1] & [B1] 'c'est le signe « & » qui fait une concaténation
End Sub

à toi d'adapter éventuellement les références de cellules, puisque tu n'as pas jugé utile de l'indiquer ; si des cellules sont pas sur la feuille active, tu devras aussi l'ajouter dans ce style : Worksheets("Ventes Février").[A1] ou Worksheets(3).[A1] (selon que tu préfères utiliser une référence par nom de feuille ou par n° de feuille = index) ; si par nom, tu peux utiliser aussi cette notation abrégée : ['Ventes Février'!A1] (c'est idem).

si tu veux faire le job pour toute une colonne, tu peux aussi t'amuser à ajouter une boucle pour balayer toute la plage.

malgré ton manque de précisions, j'te souhaite bonne chance !


note que s'il manque des précisions, les seules qu'on peut facilement accepter est qu'à priori : a) tu utilises un ordinateur (un PC, sauf indication explicite que t'as un Macintosh) ; b) tu utilises Excel (sauf indication explicite que tu utilises un autre tableur ; mais dans tes infos de config, c'est noté « 2016 FR ») ; c) ton ordi est allumé et tu n'as pas de panne de courant (sans ça, tu n'aurais pas pu poster ton sujet, si maigre soit-il ! oh, j'allais oublier : pour la même raison, on sait aussi que t'as pas de panne de réseau ; vive internet ! ).


@MFerrand : si t'en as envie, j'te laisse le soin de compléter mon petit topo par un exemple de boucle plus concret.

(mais j'comprends qu'avec aussi peu d'infos, c'est pas encourageant ! )

dhany

Un peu court, jeune homme ! comme a déjà dit quelqu'un...

Bonne soirée.

Bonjour

Je m'excuse pour le message trop court , j'ai fait une fausse manip qui à supprimer le début du message .

Pour reprendre l'énoncé exacte de mon problème, je souhaite comparer la valeur des cellules de la colonne A, si plusieurs sont identiques, alors je compare la cellule de la colonne M, si elles sont identique je ne fais rien, en revanche si elles sont différentes je concatène les 2

A B ....... M A B ....... M

1 1 1 1 1 1 2

1 1 1 => 1 1 1 2

2 1 1 2 1 1

1 1 2 1 1 1 2

2 1 1 2 1 1

Je suis ultra novice dans les macros sur excel, je vous remercie d'avance pour votre aide.

désolé, mais ton tableau est quasi illisible : on voit mal quelles données sont dans quelles colonnes !

tes explications sont toujours pas bien claires (mais ce sera peut-être compréhensible avec un tableau lisible ?).

tu devrais joindre un fichier plutôt qu'une image !

dhany

Bonsoir dhany,

je ne maitrise pas encore le tableur et le forum...

Je joins un fichier pour exemple.

Je souhaite donc remplir la colonne N avec la concatenation des colonnes M si la valeur de A est identique et que M est different mais sans multiplier les memes texte (comme les lignes 2-3-5...), sinon on garde M (comme les lignes 4-8-12-15).

J'espère que je suis plus clair...

Merci d'avance,

Bonsoir,

Sub AMN()
    Dim d As Object, aa, mm, i&, n&
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        aa = .Range("A1:A" & n).Value
        mm = .Range("M1:M" & n).Value
    End With
    Set d = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(aa)
        If aa(i, 1) <> "" Then
            If InStr(1, d(aa(i, 1)), mm(i, 1)) = 0 Then d(aa(i, 1)) = _
             d(aa(i, 1)) & " " & mm(i, 1)
        End If
    Next i
    For i = 1 To UBound(aa)
        mm(i, 1) = Trim(d(aa(i, 1)))
    Next i
    ActiveSheet.Range("N1").Resize(n).Value = mm
End Sub

Bonjour hommaisflo, le forum,

je suis sûr que le code VBA de MFerrand fait ce que tu as demandé, mais pourquoi veux-tu répéter les mêmes infos sur chaque ligne d'une même lettre ? ce serait plus clair et lisible avec un autre petit tableau de synthèse (séparé du 1er tableau) :

A 10 20 30 40

B 10 20

C 10 15

D 10

donc un petit tableau de 4 lignes seulement ; c'est juste une suggestion ; après, les goûts et les couleurs...

dhany

Rechercher des sujets similaires à "creation macro concatenation colonne identique"