XL 2013 Formule ou macro pour intercaller des cellules vides dans une liste de noms

CHLOE90

XLDnaute Junior
Bonsoir le Forum,

J'essaye en vain depuis cet après midi de trouver une solution à mon problème et je me résous à vous écrire.
Voilà, j'ai une liste de noms dans un colonne qui est très longue et je souhaiterais dans la colonne voisine disposer de la même liste mais que les noms soient séparés par deux cellules vides.
Je vous joins un petit fichier pour illustration.
Merci pour votre bienveillance

Chloé
 

Pièces jointes

  • formule ou macro liste noms séparés par des cellules vides.xlsx
    8.9 KB · Affichages: 8

vgendron

XLDnaute Barbatruc
Hello
un exemple par macro avec ce code
VB:
Sub intercalle()
Dim tabloinit() As Variant
Dim tabloFinal() As Variant

With ActiveSheet
    Fin = .Range("B" & .Rows.Count).End(xlUp).Row
    tabloinit = .Range("B10:B" & Fin).Value
    ReDim tabloFinal(1 To 3 * UBound(tabloinit, 1), 1 To 1)
    
    For i = LBound(tabloinit, 1) To UBound(tabloinit, 1)
        tabloFinal(3 * (i - 1) + 1, 1) = tabloinit(i, 1)
        tabloFinal(3 * (i - 1) + 2, 1) = ""
        tabloFinal(3 * (i - 1) + 3, 1) = ""
    Next i
    
    .Range("C10").Resize(UBound(tabloFinal), 1) = tabloFinal
End With
End Sub
 

vgendron

XLDnaute Barbatruc
Hello

Le meme code avec quelques commentaires..
VB:
Sub intercalle()
'déclaration de deux tableaux vba
Dim tabloinit() As Variant
Dim tabloFinal() As Variant

With ActiveSheet 'dans la feuille active
    Fin = .Range("B" & .Rows.Count).End(xlUp).Row 'on recupère la dernière ligne non vide de la colonne B
    tabloinit = .Range("B10:B" & Fin).Value 'on met les valeurs dans le tablo
    ReDim tabloFinal(1 To 3 * UBound(tabloinit, 1), 1 To 1) 'on redimensionne le tablo final sur 3fois la taille du tabloinit (3 = 1 nom + 2 lignes vides)
    
    For i = LBound(tabloinit, 1) To UBound(tabloinit, 1) 'pour chaque ligne du tablo init
        tabloFinal(3 * (i - 1) + 1, 1) = tabloinit(i, 1) 'on met le nom dans le tablofinal
        tabloFinal(3 * (i - 1) + 2, 1) = "" 'on ajoute deux lignes vides
        tabloFinal(3 * (i - 1) + 3, 1) = ""
    Next i
    
    .Range("C10").Resize(UBound(tabloFinal), 1) = tabloFinal 'on colle le tablofinal dans la feuille
End With
End Sub
 

job75

XLDnaute Barbatruc
Bonjour CHLOE90, vgendron,

Une solution par formule avec en C10 :
Code:
=SI(MOD(LIGNE()-10;3);"";INDEX(B:B;10+ENT((LIGNE()-10)/3)))
10 étant le numéro de la 1ère ligne.

A+
 

Pièces jointes

  • formule liste noms séparés par des cellules vides(1).xlsx
    15.9 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
315 149
Messages
2 116 781
Membres
112 859
dernier inscrit
patricekangourou