Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

séparer une ligne en plusieurs

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

vincenus33

XLDnaute Nouveau
Bonjour,

voilà mon problème.

j'ai un fichier excel avec plusieurs lignes. dans la colonne G, j'ai plusieurs valeurs.
par exemple en colonne G, je peux avoir AAA, BBB, CCC. A chaque nouvelle valeur, il y a un renvoi à la ligne.
Je souhaiterai du coup couper, en fonction du nombres de valeurs en G, en x lignes (ligne 1 avec en G, AAA, ligne 2, BBB et ligne 3 CCC en G) en conservant les données des colonnes A à F et des autres après G.
si c'est plus simple, la conversion peut se faire dans un autre onglet, aucun problème pour moi.

MERCI pour votre aide

j'ai joints un fichier normalement!
 

Pièces jointes

Re : séparer une ligne en plusieurs

Bonjour vincenus33,

Voyez cette macro dans le fichier joint (clic droit sur l'onglet Sépare et Visualiser le code) :

Code:
Private Sub Worksheet_Activate()
Dim tablo, i&, u&, h&, col%, s, j&, n&, k%
With Sheets("Base") 'nom à adapter
  tablo = .Range("A1:H" & .Cells(.Rows.Count, "G").End(xlUp).Row)
End With
If UBound(tablo) > 1 Then
  '--détermination de la hauteur---
  For i = 2 To UBound(tablo)
    u = UBound(Split(tablo(i, 7), vbLf))
    h = h + IIf(u < 0, 1, u + 1)
  Next
  '---remplissage du tableau---
  col = UBound(tablo, 2)
  ReDim R(1 To h, 1 To col)
  For i = 2 To UBound(tablo)
    s = Split(tablo(i, 7), vbLf)
    u = UBound(s)
    j = IIf(u < 0, 1, u + 1)
    For j = 1 To j
      n = n + 1
      For k = 1 To col
        R(n, k) = tablo(i, k)
      Next
      If u >= 0 Then R(n, 7) = Trim(s(j - 1))
    Next
  Next
  [A2:H2].Resize(n) = R
End If
Range("A" & n + 2 & ":H" & Rows.Count).ClearContents
End Sub
Elle se déclenche quand on active la feuille et elle est très rapide sur un grand tableau.

A+
 

Pièces jointes

Re : séparer une ligne en plusieurs

Re,

Pour les bordures, on peut appliquer une Mise en forme conditionnelle (MFC) sur les colonnes A:H.

Edit : j'ai aussi légèrement simplifié la macro :

Code:
j = IIf(u < 0, 0, u)
For j = 0 To j
  n = n + 1
  For k = 1 To col
    R(n, k) = tablo(i, k)
  Next
  If u > 0 Then R(n, 7) = Trim(s(j))
Next
Fichier (2).

A+
 

Pièces jointes

Dernière édition:
- 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
6
Affichages
212
Réponses
7
Affichages
167
Réponses
5
Affichages
378
Réponses
25
Affichages
618
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…