Concaténer les dates de plusieurs céllule avec un retour à la ligne

  • Initiateur de la discussion Initiateur de la discussion Boby71C
  • 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 !

Boby71C

XLDnaute Impliqué
Bonsoir à tous
Dans la colonne A, j'ai des Références de projets.
Dans la colonne B j'ai des dates.

Dans une nouvelle colonne, je voudrai retrouver 1 seul foi la référence du projet et la colonne à coté, la totalité des dates de ce même projet les une au dessus des autres dans la même céllule
ex
Projet X 23/2
25/2
1/3
Est ce possible ?

Merci pour votre aide.
 

Pièces jointes

Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Bonsoir Boby71C,

Si concernant ta formule, tu fais ceci :
-> "format" / "cellules..." / Onglet "Alignement" / cocher la case "Renvoyer à la ligne" automatiquement

Réponse général :

Alors faire ainsi (avec &) :
=A1&CAR(10)&A2&CAR(10)&A3

ou pareil avec concatener() :
=CONCATENER(A1;CAR(10);A2;CAR(10);A3)

Pour ton cas précis, du fait que tes cellules contiennent des dates, mieux vaut par exemple faire ainsi pour la cellule [F1] avec & :
Code:
=TEXTE(B1;"jj/mm")&CAR(10)&TEXTE(B2;"jj/mm")&CAR(10)&TEXTE(B3;"jj/mm")&CAR(10)&TEXTE(B4;"jj/mm")

Ou ainsi avec CONCATENER :
Code:
=CONCATENER(TEXTE(B1;"jj/mm");CAR(10);TEXTE(B2;"jj/mm");CAR(10);TEXTE(B3;"jj/mm");CAR(10);TEXTE(B4;"jj/mm"))


Avantage de la fonction TEXTE(...;"jj/mm") tes dates seront toujours sur deux chiffres (pour les jours et pour les mois), donc plus facile à aligner et plus jolie 😉

Après évidement, si tu le souhaite, rien ne t'empêche de remplacer :
TEXTE(...;"jj/mm")

par :
TEXTE(...;"jj/mm/aa")

Ou tout autre format de ton choix (quasiment la même façon de l'écrire que lorsque tu fais un format personnalisé)

PS. : si tu n'as pas cocher "Renvoyer à la ligne", à la place du "retour chariot", excel dessinera un carré tout vilain 😀

Bonne soirée
 
Dernière édition:
Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Bonsoir Boby71C, Excel-lent,

Un essai par macro :

Code:
Sub Concact()

Dim k As Long, y As Long, x As Long, Tablo, Concat As String, Collec, Element
With Sheets("Feuil1")

  Tablo = .Range("A1:B" & .Range("A65536").End(xlUp).Row)
  Set Element = CreateObject("Scripting.Dictionary")
  For k = 1 To UBound(Tablo)
      If Not Element.Exists(Tablo(k, 1)) Then Element.Add Tablo(k, 1), Tablo(k, 1)
  Next

  Collec = Element.items

  For x = 0 To UBound(Collec)
     For y = 1 To UBound(Tablo)
        If Collec(x) = Tablo(y, 1) Then Concat = Concat & Format(CDate(Tablo(y, 2)), "d/m") & Chr(10)
     Next
    .Range("C" & x + 1) = Collec(x)
    .Range("D" & x + 1) = Left(Concat, Len(Concat) - 1)
    .Range("D" & x + 1).NumberFormat = "d/m;@"
    .Range("D" & x + 1).Rows.AutoFit
    Concat = ""
  Next

End With

End Sub

Bonne soirée
 
Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Bonsoir Excel lent
Merci pour ton aide

Le souci dans la formule, est que les dates s'alignent normalement, et je désir les obtenir les une au dessus des autres pour une meilleur lisibilité.
Peut être n'est ce pas possible !

Merci
 
Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Bonsoir Boby71C, Bqtr,

Boby71C à dit:
je désir les obtenir les une au dessus des autres pour une meilleur lisibilité.
Peut être n'est ce pas possible !

Ben si!!!

C'est justement ce que font les solutions que je t'ai proposé! A moins que je n'ai pas compris ce que tu veux?

Regarde le fichier ci-joint les formules en situation! C'est bien ce que tu voulais?

Par contre, si tu as des tonnes de lignes à traiter ainsi, mieux vaut peut être utiliser la solution VBA, comme proposé par Bqtr.

Bonne fin de soirée
 

Pièces jointes

Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Bonjour à tous
Merci à tous les deux, excuses moi Excel lent, je n'avais pas bien positionné ta formule. C'est exact, ça fonctionne.

J'opte pour le VBA de bqtr car mon fichier a plus de 200 lignes et il augmente de semaines en semaines.

Je vais donc éssayer d'adapter à mon besoin.

Merci
 
Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Bonsoir à tous
Le système par VBA fonctionne bien, mais mon fichier est tellement important qu' il met un temps fou à concaténer. Plus d'une demi heure😱
J'ai plus de 3000 lignes alors que j'ai besoin d'en traiter seulement 200 à 300. Je ne trouve pas de solution.
Dans la colonne E, sont importés les projets en cours.
Dans les colonne A et B figurent la totalité des projets, faits, et en cours.
Par rapport à mon fichier ci-dessus, il faudrait que je conserve en colonne A seulement les projets identifiés en colonne E et éliminer les autres en colonnes A et B pour alléger avant de concaténer.

Si vous aviez une solution, ça m'aiderai beaucoup.

Merci pour votre aide.
 
Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Re,

Essaye avec ceci:

Code:
Sub Concact()

Dim k As Long, y As Long, x As Long, m As Long, Tablo, Concat As String, Collec, Element, Resultat()

Application.ScreenUpdating = False
With Sheets("Feuil1")

  Tablo = .Range("A1:B" & .Range("A65536").End(xlUp).Row)
  Set Element = CreateObject("Scripting.Dictionary")
  For k = 1 To UBound(Tablo)
      If Not Element.Exists(Tablo(k, 1)) Then Element.Add Tablo(k, 1), Tablo(k, 1)
  Next

  Collec = Element.items

  For x = 0 To UBound(Collec)
    ReDim Preserve Resultat(1 To 2, m)
      For y = 1 To UBound(Tablo)
         If Tablo(y, 1) = Collec(x) Then Concat = Concat & Format(CDate(Tablo(y, 2)), "d/m") & Chr(10)
      Next
    Resultat(1, m) = Collec(x)
    Resultat(2, m) = Left(Concat, Len(Concat) - 1)
    Concat = ""
    m = m + 1
  Next
  
  .Range("C1").Resize(UBound(Resultat, 2) + 1, UBound(Resultat, 1)) = Application.Transpose(Resultat)
  
  With .Range("D1:D" & .Range("D65536").End(xlUp).Row)
    .NumberFormat = "d/m;@"
    .Rows.AutoFit
    .HorizontalAlignment = xlCenter
  End With
End With
Application.ScreenUpdating = True

End Sub
Tous se fait en mémoire ce qui est très rapide. Sur le fichier en PJ avec plus de 3000 lignes et 189 références différentes cela prend à peine plus d'une seconde.

A+
 

Pièces jointes

Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Bonsoir Pierre Olivier et le forum

Merci beaucoup pour ta nouvelle aide.
J'ai finalisé mon fichier ce matin au boulot, mais 10 mn de traitement.🙁
Je ferais un essai la semaine prochaine, si je trouve le temps car très chargée.
Je te tiendrai au informé du résultat

Bon Week End
 
Re : Concaténer les dates de plusieurs céllule avec un retour à la ligne

Bonsoir à toutes et tous

Pierre Olivier, je viens d'essayer ta solution à la maison. Incomparable, 5 secondes et tout est OK. Je vais essayer demain au boulot, ou j'ai un PC moins puissant.

Merci à tous.
 
- 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

Réponses
2
Affichages
257
Réponses
4
Affichages
247
Retour