Fonction Concaténer VBA

  • Initiateur de la discussion Initiateur de la discussion PhilouG
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

PhilouG

XLDnaute Nouveau
Bonjour,

Je suis en train de créer une base de données (BDD) et lorsqu'on enregistre certaines informations sur un onglet, elles se reportent dans un autre onglet BDD. Dans cet onglet formulaire, j'ai les cases D6 à D20 qui sont des commentaires et que j'aimerais concaténer en une seule case dans l'onglet BDD. J'ai essayé de créer une fonction Concatener() dans VBA, mais j'ai du mal à l'appeler et à faire sortir le résultat dans la BDD.
Si qq'un a une petite piste, je suis preneuse !
Merci beaucoup 🙂

P.S : Ci-joint mon fichier Excel pour que ce soit plus clair ! L'onglet formulaire est "Original" et l'onglet BDD Prod (possiblement masqué, il faut l'afficher) est la BDD (obviously ahah).
 

Pièces jointes

Solution
Bonjour le fil, PhilouG, Draneb

Une fonction sur le même principe
(mais en moins finalisé que la précédente)
NB:Voir les commentaires en vert
VB:
Function Concat(ByVal Rng As Range)
'Pour concaténer une seule colonne (avec moins de 65536 lignes)
Concat = Join(Application.Transpose(Rng.Value), ";")
End Function
Ok merci pour l'info.
Petite question supplémentaire si cela ne vous dérange pas, dans ma fonction je ne mets que 2 cellules D6 et D7 mais j'aimerais pouvoir faire ça avec toute la plage de données de D6 à D20, voire plus... Est-ce que vous avez une idée pour ne pas avoir à tout écrire à la main ?
 
VB:
Function Concaténer(ByVal Rng As Range, Optional ByVal Sép As String = "")
   Dim TV(), L As Long, C As Long, TC() As String, N As Long
   TV = Rng.Value
   ReDim TC(1 To UBound(TV, 1) * UBound(TV, 2))
   For L = 1 To UBound(TV, 1): For C = 1 To UBound(TV, 2)
      N = N + 1: TC(N) = TV(L, C): Next C, L
   Concaténer = Join(TC, Sép)
   End Function

'À L'utilisation préciser Concaténer(ActiveSheet.[D6:D20])
 
Bonjour le fil, PhilouG, Draneb

Une fonction sur le même principe
(mais en moins finalisé que la précédente)
NB:Voir les commentaires en vert
VB:
Function Concat(ByVal Rng As Range)
'Pour concaténer une seule colonne (avec moins de 65536 lignes)
Concat = Join(Application.Transpose(Rng.Value), ";")
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Erreur code Vba
Réponses
21
Affichages
982
  • Question Question
Microsoft 365 macro vba sumifs
Réponses
5
Affichages
648
Réponses
26
Affichages
2 K
Réponses
1
Affichages
739
Retour