Créer une formule de concatenation

Résolu/Fermé
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 - 23 nov. 2016 à 21:08
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 - 24 nov. 2016 à 18:41
Bonjour à tous,

Je cherche à faire une macro qui concatenerait le contenu de toutes les cellules d'une sélection (Celles ci provenant déjà d'une cellule quelconque)
J'ai un peu avancé et j'arrive à écrire ma formule dans la cellule, mais malheureusement il semble que cela ne soit que du texte, cela ne fonctionne pas.
Quelqu'un peut il m'aider ?

Merci d'avance !
Voici mon code :

Sub fonction()
'
'
Dim cellule As Range
Dim nb As Integer
Dim form As String

ligne = ActiveCell.Row
col = ActiveCell.Column

For Each cellule In Selection
' formule quelconque
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=0,RC[-1]&""m "",)"

ActiveCell.Offset(1, 0).Range("A1").Select
nb = nb + 1
' variable permettant d'écrire la formule de concatenation

form = "R[-" & nb & "]C&" & form

Next
' afficher la variable :MsgBox form


ActiveCell.FormulaR1C1 = " = " & form & ""

ActiveCell.Select

End Sub


5 réponses

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
23 nov. 2016 à 23:59
Bonjour,

ce n'est sûrement pas avec ton code qu'on va comprendre ce que tu veux faire.
Déjà une fonction ne peut pas écrire dans une autre cellule, elle retourne une valeur, c'est tout.
eric
0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
24 nov. 2016 à 06:12
Bonjour,

Ce que je veux faire est écrit au début : concatener les valeurs d'un nombre variable de cellules sélectionnées.
La fonction créée devra retournera la valeur recherchée, bien évidemment.
Ce que je veux montrer avec mon code c'est que ce que j'ai fait ne crée pas une formule mais du texte.
Donc j'ai besoin d'aide, j'y suis depuis un moment et je ne trouve pas du tout
Merci d'avance
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
24 nov. 2016 à 07:41
Bonjour,

concaténer veux dire mettre bout à bout 2 chaines : "bon"&"jour="bonjour".
Et toi tu parles de nombres...
Donc tu déposes un fichier exemple qui explique mieux, avec le résultat à obtenir.
eric
0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
24 nov. 2016 à 13:36
Voili voilà....


http://www.cjoint.com/c/FKymI7ZRPhm
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
Modifié par ccm81 le 24/11/2016 à 14:08
Bonjour à tous les deux

Une petite fonction personnalisée à mettre dans un module général (depuis l'editeur vba, Insertion/Module)
Public Function concat(plage As Range) As String
Dim s As String, c As Range
s = ""
For Each c In plage
s = s & c.Value
Next c
concat = s
End Function
Pour l'utiliser dans la feuille
=concat(E2:E5)

Cdlmnt
0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
24 nov. 2016 à 15:29
Merci de votre réponse

Sur le principe ça me parait exactement ce que je veux faire, à part que je veux le faire dans le VBA, comme une Sub et non une function

Je dois générer une ActiveCell.FormulaR1C1 = .... à l'aide de la concatenation du contenu des cellules sélectionnées..

Une idée ?????
Je rame depuis des heures !

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
Modifié par ccm81 le 24/11/2016 à 16:24
Un exemple

http://www.cjoint.com/c/FKypcsbpdP3

RQ. Je dois générer une ActiveCell.FormulaR1C1 = .... à l'aide de la concatenation du contenu des cellules sélectionnées
1. Tu ne peux pas à la fois selectionner la plage à concaténer et la cellule où va se trouver le resultat
2. Une FormulaLocal est nettement plus lisible qu'une FormulaR1C1

Cdlmnt
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
24 nov. 2016 à 16:59
Quoi que ...
http://www.cjoint.com/c/FKyp7s0bXT3
0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
24 nov. 2016 à 18:41
Parfaitement génial et super, c'est juste ce que je voulais !
En ce qui concerne tes remarques :
1) J'ai concaténé dans la cellule en dessous, donc
ActiveCell.FormulaLocal = f
2) mais grave ! Merci mille fois

Encore merci de cette réponse rapide, efficace et de ton amabilité.
Tu m'as fait gagner bien du temps
Bonne soirée à toi
0