Plusieurs lignes dans une colonne : passer chaque ligne en colonne

Voila mon problème dans une cellule j'ai A2

Lundi 06:00 - 10:00 4.0
Lundi 17:00 - 20:00 3.0
Mardi 06:00 - 10:00 4.0
Mardi 17:00 - 20:00 3.0
Jeudi 06:00 - 10:00 4.0
Jeudi 17:00 - 20:00 3.0
Vendredi 06:00 - 10:00 4.0
Vendredi 17:00 - 20:00 3.0

Je voudrais en B2 Lundi 06:00 - 10:00 4.0 en C2 Lundi 17:00 - 20:00 3.0 en D2 Mardi 06:00 - 10:00 4.0 en E2 Jeudi 06:00 - 10:00 4.0 et ainsi de suite

Sinon je voudrais aussi pouvoir extraire de la cellule A2 et pour chaque ligne de la cellule A2 les deux derniers chiffres et pouvoir les additionner

Exemple : extraire dans la celulle A2 4.0 et 3.0 et 4.0 et 3.0 et 4.0 et 3.0 et 3.0 ( et faire la somme ) afin qu'elle le donne le résultat en B2 de 27

Merci beaucoup de votre aide

Bonjour

Pour la 1ère question

Sélectionne tes cellules, copier, sélectionne B2, collage spécial transposé

Le seconde annule la 1ère ?

Merci mais le texte ci-dessous est dans une même cellule et j'ai 800 lignes comme ça

Lundi 06:00 - 10:00 4.0
Lundi 17:00 - 20:00 3.0
Mardi 06:00 - 10:00 4.0
Mardi 17:00 - 20:00 3.0
Jeudi 06:00 - 10:00 4.0
Jeudi 17:00 - 20:00 3.0
Vendredi 06:00 - 10:00 4.0

bonjour

ou alors

=DECALER($A$2;COLONNE(A:A)-1;;)

à tirer vers la droite

cordialement

image

Voici une copie de la colonne, avec plusieurs lignes par cellule... je voudrais mettre chaque ligne de la cellule en colonne

Merci bcp

Merci Tulipe,

Cela ne régle pas mon pbm ....mais c'est en cherchant que l'on trouve :)

Salut Marie-José,
Salut les as,

quelques lignes de ton fichier, stp...


A+

Tout comptes faits, si et si et si et si... on ne sait jamais... sur un malentendu !

Un double-clic sur la feuille démarre la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tSplit, dbTot#
'
Cancel = True
Application.ScreenUpdating = False
'
For x = 2 To Range("A" & Rows.Count).End(xlUp).Row
    dbTot = 0
    tSplit = Split(Range("A" & x).Value, Chr(10))
    For y = 0 To UBound(tSplit)
        If IsNumeric(Right(tSplit(y), Len(tSplit(y)) - InStrRev(tSplit(y), " "))) Then _
            dbTot = dbTot + Val(Right(tSplit(y), Len(tSplit(y)) - InStrRev(tSplit(y), " ")))
    Next
    Range("B" & x).Value = dbTot
    Range("C" & x).Resize(1, UBound(tSplit) + 1) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(tSplit))
Next
'
Application.ScreenUpdating = True
'
End Sub
6mj.xlsm (18.88 Ko)


A+

Bonjour à tous

Comme souvent j'ajoute à la solution VBA de curulis57 ma solution PowerQuery (intégré à ta version Excel)

(un vrai numéro de duettiste )

7croiser-pq.xlsx (20.85 Ko)

Remplacer les valeurs du tableau source par les tiennes (ne pas effacer le tableau structuré, juste remplir les lignes), puis Données, Actualiser Tout

Bonjour,

@Chris

#"Lignes groupées" = Table.Group(#"Type modifié1", {"Index"}, {{"Valeur", each List.Sum([Valeur]), type nullable number}, {"Tabl",each Table.AddIndexColumn(_,"Index.1",1,1,Int64.Type),type table}}),

Cdlt.

Bonjour Chris

C'est ce que je obtenir, mais je n'arrive pas à le refaire

Comment tu as fait avec PowerPivot

Merci beaucoup

Bonjour

Ce n'est pas PowerPivot mais PowerQuery : Données, Obtenir des données, Lancer PowerQuery : tu peux voir la requête avec à droite les diverses étapes dont on peut voir le détail dans la barre de formule et en cliquant sur le petit sur la ligne de l'étape

Si l'une ou l'autre des étapes ne te parait pas claire, reposte.

Bonjour

@Chris
#"Lignes groupées" = Table.Group(#"Type modifié1", {"Index"}, {{"Valeur", each List.Sum([Valeur]), type nullable number}, {"Tabl",each Table.AddIndexColumn(_,"Index.1",1,1,Int64.Type),type table}}),

Merci, j'achète : ajouté dans ma boîte à malices avec grouper et combiner at once

Maintenant faut que ça rentre dans la caboche...

Pour les index j'ai oublié d'enlever le dernier argument incompatible avec les versions antérieures à 365 (OK sur dernière MAJ de 2019)
Il faut donc en tenir compte pour la compatibilité descendante...

Salut Chris,

j'avoue ne rien capter du tout à ce langage !
J'ai regardé le développement de ta requête : du chinois !

Je me contenterai donc de croiser l'octet VBA, c'est 'achement plus facile !
Et qu'est-ce qu'on s'amuse, en plus !


A+

Re

Salut Chris,

j'avoue ne rien capter du tout à ce langage !
J'ai regardé le développement de ta requête : du chinois !

Contrairement au VBA où l’enregistreur donne un piètre code, dans PowerQuery, on écrit très peu de code.

On utilise les commandes des menus et cela se traduit en code M. On manipule des tables et des champs comme en SQL...

Là tu manipules un array, donc finalement une pseudo table...

Pour qui ne connait pas VBA Chinois ou Mandarin...

Bonjour

PowerQuery me va très bien, Merci Chris....car avec la fonction convertir on ne peut pas obtenir ce résultat . :) Il faut que je perfectionne dessus car pour le traitement des données c'est moins prise de tête qu'une Macro quand on y connait rien.....Un grand merci à tous

Rechercher des sujets similaires à "lignes colonne passer chaque ligne"