[Résolu] Fractionner une cellule en plusieurs lignes

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

N

niko67

Guest
Bonsoir à tous,

Je bute depuis quelques heures sur un problème de base de données.. 🙁

Je dois séparer une ligne contenant des catégories (séparées par des "/") en plusieurs lignes.
Pour être plus explicite, voici deux captures correspondants à l'état actuel, et à l'arrivée souhaitée :

CaptureNiko67.jpg

  • J'ai environ 5000 lignes à traiter,
  • Les cellules A à N n'ont pas besoin d'être "traitées"
  • Toutes les cellules de O sont à traiter

Voilà, en espérant que cela soit assez clair 🙂

Merci d'avance !
 
Dernière modification par un modérateur:
Re : Fractionner une cellule en plusieurs lignes

Bonsoir,

Sélectionner les données de la colonne O
Puis onglet 'Données', groupe 'Outils de données' bouton 'Convertir'

A l 'étape 1 laissé 'Délimité' coché
A l'étape 2 mettre le '/' dans la zone 'Autre'

cliquer sur terminer.

A+
 
Re : Fractionner une cellule en plusieurs lignes

Bonsoir Hasco !

Merci mais ce n'est pas tout à fait le résultat attendu..
En effet, les éléments séparés devraient se trouver dans des lignes les unes en dessous des autres (voir capture). 🙂

Je pense qu'une macro serait plus adapté à ce type de traitement, mais j'avoue que je n'y connais pas grand chose.. 😕
 
Re : Fractionner une cellule en plusieurs lignes

Bonjour,

Voir fichier joint. Code VB:
'---- A MODIFIER: nom de la feuille de travail
With ThisWorkbook.Sheets("tests")

'parcourir les cellues de la colonne A de la dernière à la deuxième
For l = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1

'---- Référence à la cellule 1 de la ligne (colonne A)
Set c = .Cells(l, 1)
'---- Récupération de la chaine de caractère de la 15 ème colonne (O)
s = c(1, 15)

'---- combien de / dans la chaine 's' à traiter
cpt = UBound(Split(s, "/"))

'---- insérera cpt lignes sous la cellule c
c(2).Resize(cpt, 15).Insert xlShiftDown
pos = 0
For i = 1 To cpt
'---- position du prochain '/' dans la chaine 's'
pos = InStr(pos + 1, s, "/")
'---- inscrire la portion de chaine idoine dans la cellule de la colonne O
' en partant du bas vers le haut
c(cpt - i + 2, 15) = Left(s, pos - 1)
Next i
Next
End With





A+
 
Re : Fractionner une cellule en plusieurs lignes

Bonjour Hasco !

Merci pour cette réponse rapide, et plus que précise 🙂

J'ai une petite erreur, qui à mon avis proviens du fait que j'ai certaines cellules en O qui ne contiennent pas de "/"..

Dois-je tricher d'une certaine manière ?
 
Re : Fractionner une cellule en plusieurs lignes

Re,

D'où la nécessité d'avoir des fichiers exemples représentatifs du problème et pas seulement un aperçu.

A coincer entre AppOn et AppOff en remplacement des lignes existantes:
VB:
 '---- A MODIFIER: nom de la feuille de travail
    With ThisWorkbook.Sheets("tests")

        'parcourir les cellues de la colonne A de la dernière à la deuxième
        For l = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1

            '---- Référence à la cellule 1 de la ligne (colonne A)
            Set c = .Cells(l, 1)
            '---- Récupération de la chaine de caractère de la 15 ème colonne (O)
            s = Trim(c(1, 15))

            '---- s'il y a au moins 1 '/' dans la chaine 's'
            If InStr(1, s, "/") > 0 Then

                '---- combien de / dans la chaine 's' à traiter
                cpt = UBound(Split(s, "/"))
                '---- insérera cpt lignes sous la cellule c
                c(2).Resize(cpt, 15).Insert xlShiftDown
                pos = 0
                For i = 1 To cpt
                    '---- position du prochain '/' dans la chaine 's'
                    pos = InStr(pos + 1, s, "/")
                    '---- inscrire la portion de chaine idoine dans la cellule de la colonne O
                    '     en partant du bas vers le haut
                    c(cpt - i + 2, 15) = Left(s, pos - 1)
                Next i
            End If
        Next
    End With

A+
 
Re : Fractionner une cellule en plusieurs lignes

Merci beaucoup Hasco ! 🙂

Désolé de ne pas avoir tout précisé dès le début, je n'ai pas vraiment l'habitude d'utiliser ce genre de fonctionnalités..

En tout cas cela fonctionne parfaitement !

Merci encore ! 😱
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
38
Affichages
2 K
E
Réponses
1
Affichages
1 K
Elegancya
E
Retour