XL 2016 Copier une cellule sur une plage flottante

airsage

XLDnaute Junior
Bonjour,

Dans le fichier ci joint j'ai une liste avec plusieurs titres et du texte sur 1 ou plusieurs lignes pour chaque titre.
la source est mon extraction et la cible c'est ce que je cherche à obtenir

Je voudrais que le titre n'apparaisse plus en haut du texte mais autant de fois qu'il y a de lignes de texte pour chacun de ces titres.

J'ai cherché sur le forum mais rien ne correspond a ce que je cherche à obtenir.

merci pour votre aide.
 

Pièces jointes

  • titre.xlsx
    8.8 KB · Affichages: 31

job75

XLDnaute Barbatruc
Bonjour airsage, bonjour chère ânesse,

Une solution très rapide même sur un très grand tableau :
Code:
Sub Traiter()
'se lance par Ctrl+T
Dim tablo, i&, n&, titre$
With [A2].CurrentRegion 'à adapter
  tablo = .Resize(, 3)
  For i = 1 To UBound(tablo)
    If InStr(tablo(i, 1), "-") Then
      n = n + 1
      tablo(n, 1) = tablo(i, 1)
      tablo(n, 3) = titre
    Else
      titre = tablo(i, 1)
    End If
  Next
  If n = .Rows.Count Then Exit Sub 'aucun effet après la 1ère exécution
  If n Then
    .Cells(1).Resize(n) = tablo
    .Cells(1, 3).Resize(n) = Application.Index(tablo, , 3)
  End If
  .Cells(n + 1, 1).Resize(.Rows.Count - n).Delete xlUp
  With Me.UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
Fichier joint.

J'ai testé sur un tableau de 56 000 lignes, la macro s'exécute chez moi en 0,6 seconde.

A+
 

Pièces jointes

  • titre(1).xlsm
    22 KB · Affichages: 30
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 896
Messages
2 093 388
Membres
105 716
dernier inscrit
jrmdprt