Revenir à la ligne avec un concatener

Résolu/Fermé
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019
-
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019
-
Bonjour à tous,

J'ai actuellement une marco me permettant de concatener les informations d'un tableau dans une cellule:

Function Concatener1(Plage As Range) As String
Dim C As Range
Dim Texte As String
    For Each C In Plage
        If C <> "" Then
            Texte = Texte & C.Value & "; "
        End If
    Next C
    If Len(Texte) > 0 Then Concatener1 = Left(Texte, Len(Texte) - 2)
End Function


Je voudrais savoir s'il était possible que chaque donnée revienne à la ligne au lieu d'être séparé par un simple "; " ?

Merci pour l'attention que vous porterai a ce post.
Cordialement,
Charles

PS: Veuillez m'excuser pour les fautes d'orthographes.
A voir également:

10 réponses

Messages postés
13356
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
28 janvier 2022
2 330
Bonjour,

Remplace le & "; " par & Chr(10)

Cdlmnt
Via
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Bonjour via55,

J'ai essayé ce que tu m'as dis cependant cela ne fonctionne pas et ça retire meme certaines données :/

Cordialement
Messages postés
17829
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 janvier 2022
4 910
Bonjour,

regarde avec
& vbcrlf &
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Le dernier & je le met aussi ?
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Désolé j'ai essayé avec et sans: avec ça met erreur ^^ et sans ça me donne le même resultat que quand je mets le chr(10)

Cordialement
Messages postés
17829
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 janvier 2022
4 910
Re,

oui bien & se substitut à "et" donc ton texte ou ta référence "et" le retour ligne "et"
soit "texte" & vbcrlf & "texte"
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

merci :) j'avais compris le & mais si tu ne met rien apres ca ne peux pas fonctionner :/ en tout cas moi ca veut pas ^^"
Cordialement
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Re,

Je ne sais pas si je mis prend mal mais ça ne fonctionne toujours :/ et je ne peux pas vous envoyé mon tableur car confidentiel désolé.

Cordialement
Messages postés
17829
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 janvier 2022
4 910
Re,

que veux tu faire exactement avec ta fonction personnalisée
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

En fait ce que je veux c'est concatener dans une cellule, les cellules pleines de la plage selectionnées. Les données sont alors regroupées dans une cellule separé par un ";". c'etait parfait ^^.
Cependant il m'a été demandé que les données soit separé par un retour à la ligne, du style:

topic1
topic2
topic3
tous ca dans une cellule ^^.

Je sais pas si j'ai été claire, dis moi si tu n'a pas compris :)
Cordialement
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

au lieu de: topic1; topic2; topic3
Messages postés
17829
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 janvier 2022
4 910
Re,

commence par formater ta plage Clic droit sur la plage/Format de cellule/alignement/cocher renvoyer à la ligne automatiquement

pour que la retour ligne se fasse à l'endroit ou tu veux, modifie cette ligne comme cela

Texte = Texte & vbCrLf & C.Value
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Re,
Merci pour le conseil du renvoie a la ligne ^^.
Mais du coup ^^", je m'excuse par avance, il y a un espace juste au dessus de topic 1 (je vous envoie un screen).
Cordialement
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Et normalement il y a un 3 apres le dernier "Topic"
Messages postés
26411
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
27 janvier 2022
6 192
Bonjour

Je n'y connais pas grand chose,mais à vérifier à tout hasard, au vu de ce qui se passe quand on utilise CAR(10) dans une formule standard de concaténation
bien formater la cellule / alignement / retour à la ligne

crdlmnt
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Bonjour,

via55 à deja proposé cette idée mais chez moi ca marche pas (CAR(10)=Chr(10) ) je crois ^^".

Cordialement
Messages postés
26411
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
27 janvier 2022
6 192
que vous utilisez CAR dans une formule ou CHR dans la fonction, c'est le formatage de la cellule qui reçoit le résultat dont je parlais.
Ce formatage est indispensable quand on utilise CAR(10) dans une formule, ne l'est pas quand on utilise chr(10) dans une macro, mais dans une fonction personnalisée, je ne sais pas.
Mais bon, vous avez surement essayé;
crdlmnt
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Ah le formatage ! desolé j'avais mal compris ^^" j'ai deja formaté la cellule concerné (comme vous et mike me l'avais dis) et ca donne le resultat ci dessus avec cette macro :

Function Concatener1(Plage As Range) As String
Dim C As Range
Dim Texte As String
For Each C In Plage
If C <> "" Then
Texte = Texte & vbCrLf & C.Value
End If
Next C
If Len(Texte) > 0 Then Concatener1 = Left(Texte, Len(Texte) - 2)
End Function


Mais ca elimine la moitié de la derniere valeur et il y a un espace entre le haut de la cellule et la premiere donnée.
Messages postés
26411
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
27 janvier 2022
6 192
... en fait, ça fonctionne à priori correctement si on enlève & vbCrlf
soit:
Texte = Texte & C.Value & chr(10)
c'est tout ce que je peux en dire
bonne chance
crdlmnt
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Ah ouais ^^ merci beaucoup !!! ^^

Cordialement
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 678
Bonjour,

Pour reprendre tout ce qui s'est dit depuis le début :

Function Concatener1(Plage As Range) As String
Dim C As Range
Dim Texte As String
For Each C In Plage
   If C <> "" Then Texte = Texte & C.Value & vbCrLf
Next C
'If Len(Texte) > 0 Then Concatener1 = Left(Texte, Len(Texte) - 2)
End Function 


Salutations à Mike, Via et Vaucluse
Messages postés
26
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
12 octobre 2019

Merci Beaucoup ! ;)