IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Convertir des cellules avec plusieurs lignes dedans en lignes


Sujet :

Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Par défaut Convertir des cellules avec plusieurs lignes dedans en lignes
    Bonjour
    Je viens de recevoir un fichier avec de nombreuses IP mais le problèmes est que j'ai beaucoup d'adresse cibles par cellules de la colonne B. J'ai des demandes d'ouvertures de flux vers ces IP mais je dois fournir 1 ligne par adresse de la colonne B.
    Donc comment convertir des cellules en colonnes en ligne.
    Là j'ai 68 cellules/lignes qui doivent être converties en autant de lignes qu'il y a d'adresses. Certaines cellules ont une adresse donc ça reste une ligne mais d'autres ont plusieurs dizaines d'adresses qui doivent se transformer en autant de lignes. Dans une même cellule, les adresses sont séparées par un retour à la ligne.

    En pièce jointe un exemple de ma source avec 68 lignes et il m'en faudrait autant qu'il y a de d'adresses en B.
    La 1er ligne devrait se transformer en 8 lignes la 2e ligne en 25 lignes et ainsi de suite.

    Merci pour votre aideconvertir cellules en lignes (1).xlsx

  2. #2
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 249
    Par défaut
    Bonjour
    Vous chargez vos données dans Power Query (menu données, récupérer et transformer)
    puis dans l'éditeur Power Query vous fractionnez la colonne suivant délimiteur :
    - à chaque occurrence du délimiteur
    - options avancées : en ligne
    - cochez la case "diviser en utilisant des caractères spéciaux" et "Saut de ligne"

    Sinon avec Excel 365, FRACTIONNER.TEXTE en ayant regrouper auparavant toutes les cellules avec JOINDRE.TEXTE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =FRACTIONNER.TEXTE(JOINDRE.TEXTE(CAR(10);;A1:A10);;CAR(10))
    Stéphane

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Par défaut Merci mais...
    Merci à Raccourcix (Stéphane) mais je nous n'avons pas accès à Power Query au travail et l'autre solution ne fonctionne pas, en tout cas je ne parviens pas à la faire fonctionner sur par exemple le fichier que j'ai mis en pièce jointe.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 281
    Par défaut
    Bonjour,

    Sur une feuil2 mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =FRACTIONNER.TEXTE(JOINDRE.TEXTE(CAR(10);;Feuil1!A1:A68);;CAR(10))
    Ce qui va générer 980 lignes

    Philippe

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Par défaut Merci mais....
    Bonjour
    Merci mais non cette formule ne fonctionne pas. Comme mentionné j'ai office 2016 et avec cette formule j'ai le message : "la formule contient du texte non reconnu". Quand je veux l'écrire à la main il semble que la fonction "fractionner.texte" n'existe pas (tout comme "joindre.texte")
    La fonction "fractionner.texte" existe depuis seulement 2022 n'est donc pas compatible avec ma version.
    Merci

  6. #6
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 067
    Par défaut
    Hello,

    si c'est un besoin ponctuel, un copier/coller vers Word en format texte (avec un peu de nettoyage) devrait faire l'affaire

  7. #7
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Par défaut Merci mais non
    Merci mais non la technique de passer par un copier/coller en format texte n'est pas jouable. Je suis sur des milliers d'ouvertures de flux et malheureusement l'outil d'extraction des flux actuelles (qui vont me permettre d'ouvrir les nouveaux) ne me sort que sous ce format 1 ligne avec 1 cellule de l'IP source et 1 cellule avec toutes les IP cibles. et j'ai besoin d'une ligne pour chaque cible.
    Si 1 source pointe vers 250 cibles j'ai besoin de 250 lignes et pas 1 seule comme ç'est le cas.

  8. #8
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 249
    Par défaut
    Bonjour
    Voir mon post précédent, la solution Power Query est normalement compatible avec Excel 2016 -
    je ne sais plus quelles sont les fonctions disponibles dans cette version, mais on doit pouvoir s'en sortir
    Stéphane

  9. #9
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 249
    Par défaut
    Bonjour

    Après avoir chargé les données dans Power Query (en passant par un tableau structuré nommé "Tableau1")
    voici le code généré automatiquement en choisissant le fractionnement en ligne pour le délimiteur "saut de ligne" (quelques clics)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let
        Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
        #"Fractionner la colonne par délimiteur" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Colonne1", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Colonne1")
    in
        #"Fractionner la colonne par délimiteur"
    Même s'il est généré automatiquement, il n'est pas simple à comprendre.
    on peut aussi utiliser des fonctions plus "faciles" comme par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let
        Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
        Fractionnement = Table.FromColumns({List.Combine(Table.TransformColumns(Source,{{"Colonne1", each Text.Split(_,"#(lf)"), type text}})[Colonne1])})
    in
        Fractionnement
    Stéphane

  10. #10
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    RE
    Citation Envoyé par Aulanh Voir le message
    Merci à Raccourcix (Stéphane) mais je nous n'avons pas accès à Power Query au travail
    PowerQuery étant intégré à Excel 2016 et plus, je doute que tu ne l'aies pas. Il est cependant possible dans les entreprises d'effectuer une installation particulière pour l'invalider mais si c'est le cas, travailler dans une entreprise avec une version vieille de 8 ans qui plus est volontairement limitée est une décision contre productive...

    Vérifie ton onglet Données qui permet l'accès à POwerQuery

  11. #11
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 067
    Par défaut
    hello,

    une macro simpliste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Convert_Groupe()
     
        Dim i As Long, j As Byte
        Dim Nb_Ligne As Long
        Dim Ligne_WS2 As Long
        Dim WS1 As Worksheet
        Dim WS2 As Worksheet
     
        Set WS2 = Sheets.Add(After:=Worksheets(1))
        Set WS1 = Worksheets(1)
     
        Nb_Ligne = WS1.Cells(Rows.Count, 1).End(xlUp).Row
        Ligne_WS2 = 1
     
        For i = 1 To Nb_Ligne
            Groupe_Adresse = Split(WS1.Cells(i, 1), Chr(10))
            For j = 0 To UBound(Groupe_Adresse)
                WS2.Cells(Ligne_WS2, 1) = Groupe_Adresse(j)
                Ligne_WS2 = Ligne_WS2 + 1
            Next j
        Next i
     
    End Sub

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2016, 15h32
  2. Réponses: 22
    Dernier message: 22/05/2013, 17h52
  3. convertir le texte d'une cellule en plusieurs lignes
    Par Eausport dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/07/2011, 16h14
  4. Réponses: 3
    Dernier message: 09/10/2009, 18h05
  5. Fusionner des cellules sur plusieurs lignes
    Par pekka77 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/07/2008, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo