Discussion:
concatener colonne C selon valeur colonnes A et B
Add Reply
jip
2017-02-17 15:05:54 UTC
Réponse
Permalink
Raw Message
Bonjour
Dans un tableau excel 2010 dont petit extrait ici :
http://www.cjoint.com/c/GBrpaEYTYhR

j'ai en colonne A une valeur, en B une sous-valeur et en C une donnée.
Je souhaite qu'en D soient concaténées les valeurs de C (séparées par ";") si B change et/ou si A change.
Petit exemple dans le tableau.

Pas trouvé avec les formules et en vba je ne connais pas.
Merci d'avance si vous avez une idée.
Cordialement
ThierryP
2017-02-17 16:46:30 UTC
Réponse
Permalink
Raw Message
Bonsoir jip,

Ceci devrait faire l'affaire :
'----------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B" & Range("A65536").End(xlUp).Row)) Is Nothing Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(0, 4 - Target.Column)) Then sep = ";" Else sep = ""
Target.Offset(0, 4 - Target.Column) = Target.Offset(0, 4 - Target.Column) & sep & _
Target.Offset(0, 3 - Target.Column)
Application.EnableEvents = True
Exit Sub
End If
End Sub
'--------------------------
Pour accéder à l'éditeur VBA : ALT+F11
CTRL+R pour afficher l'explorateur d'objets
colle le texte entre les deux '-----------

Bonne soirée,

ThierryP
double-clic sur "Feuil1(Feuil1) dans cet explorateur
Coller la macro ci-dessus
jip
2017-02-20 08:52:45 UTC
Réponse
Permalink
Raw Message
Post by ThierryP
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B" & Range("A65536").End(xlUp).Row)) Is Nothing Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(0, 4 - Target.Column)) Then sep = ";" Else sep = ""
Target.Offset(0, 4 - Target.Column) = Target.Offset(0, 4 - Target.Column) & sep & _
Target.Offset(0, 3 - Target.Column)
Application.EnableEvents = True
Exit Sub
End If
End Sub
'--------------------------
Pour accéder à l'éditeur VBA : ALT+F11
CTRL+R pour afficher l'explorateur d'objets
colle le texte entre les deux '-----------
Merci mais impossible de voir la macro donc de l'exécuter.
Mes connaissances vba sont trrrrèèès limitées mais je remarque "Private Sub"
Pourquoi ?
Comment ça marche ?
merci
MichD
2017-02-20 11:04:01 UTC
Réponse
Permalink
Raw Message
Bonjour,

La macro que Thierry a proposée s'exécute à chaque fois qu'une cellule de la plage A:B passe en
mode édition. Cela se produit quand tu insères manuellement une nouvelle valeur ou que tu
double-cliques dans une cellule ou que tu utilises la touche "F2". Dès que le contenu de la
cellule est validé, la macro s'exécute. Cela est fait automatiquement sans que tu aies besoin
de le demander et de cliquer sur un bouton. C'est ce qu'Excel appelle une macro événementielle.

Pour ce qui précède fonctionne, tu dois copier ce code dans le module de la feuille. Fais un
clic droit sur l'onglet de la feuille où l'action se déroule, et colle le code dans la "page
blanche"! C'est tout. Pour l'exécuter, change une valeur de la colonne A:B. Vois si cette macro
répond à tes besoins.

MichD
MichD
2017-02-20 11:07:33 UTC
Réponse
Permalink
Raw Message
Il manque un bout de phrase...

Fais un clic droit sur l'onglet de la feuille où l'action se déroule ET choisis la commande
"Visualier le code...

MichD
jip
2017-02-20 13:34:01 UTC
Réponse
Permalink
Raw Message
Post by MichD
Il manque un bout de phrase...
Fais un clic droit sur l'onglet de la feuille où l'action se déroule ET choisis la commande
"Visualier le code...
MichD
Merci mais moi mon tableau complet existe déjà.

"Pour l'exécuter, change une valeur de la colonne A:B."

Je ne comprends pas la procédure.
Tant pis.
Merci

Loading...