Scinder unligne Excel en plusieurs lignes
Bonjour,
J'ai une feuille Excel avec liste nominative et les différents éléments variables du mois (heures travaillés, heures supp faites, congés pris, absences diverses, indemnités, etc. ). Une ligne d'entête descriptive décrit les différents champs.
Je voudrais pour chaque personne obtenir une ligne avec chaque données variable du mois.
Ainsi pour avec la ligne entête : | Mois|Nom|Prénom|Matricule|Heures travaillées|heures supp. 125% |heures supp. 150%|heures congés pris|etc.
et la ligne de données: |Janvier|Durand | Paul| 000001| 154|10|12|8|...
Je souhaiterais obtenir plusieurs lignes :
|Janvier|Durand | Paul| 000001|Heures travaillées|157
|Janvier|Durand | Paul| 000001| Heures supps. 125%|10
|Janvier|Durand | Paul| 000001| Heures supps 150%|12
|Janvier|Durand | Paul| 000001| Heures congés pris|8
et la même chose pour toutes les lignes du tableau initial.
Je pensais initialement le faire avec un tableau croisé dynamique mais je maitrise mal et n'y arrive pas.
Merci de votre aide.
Thierry
Bonjour,
Il est toujours préférable d'ajouter un petit fichier d'exemple (avec données non confidentielles) et de même présentation que l'original, ça aide
Bonjour
Difficile sans fichier.... mais
1) coller ton extraction en colonne A à partir de 1 et sélectionner la colonne
2) menu Données ==> outil convertir
1ere fenêtre cliquer sur délimiteé puis suivant
2 ème : cliquer sur Autres et saisir dans la cellule correspondante | (Alt gras 6)
puis suivant
La cellule est découpée en 6 colonnes et on peut en faire ce que l'on veut
Question: le nb de lignes est il constant ?
Dans l'attente
Cordialement
FINDRH
Bonsoir à tous,
Tes données dans la 1ère feuille de ton classeur à partir de A1, avec une ligne d'en-têtes
Restitution dans la 2ème feuille de ton classeur.
Option Explicit
Sub test()
Dim a, b(), i As Long, j As Long, n As Long
Application.ScreenUpdating = False
a = Sheets(1).Range("a1").CurrentRegion.Value
ReDim b(1 To (UBound(a, 1) - 1) * (UBound(a, 2) - 4) + 1, 1 To 6)
b(1, 1) = "Mois": b(1, 2) = "Nom": b(1, 3) = "Prénom"
b(1, 4) = "Matricule": b(1, 5) = "Heures": b(1, 6) = "Nombre"
n = 1
For i = 2 To UBound(a, 1)
For j = 5 To UBound(a, 2)
n = n + 1
b(n, 1) = a(i, 1): b(n, 2) = a(i, 2)
b(n, 3) = a(i, 3): b(n, 4) = a(i, 4)
b(n, 5) = a(1, j): b(n, 6) = a(i, j)
Next
Next
'Restitution en Feuil2
With Sheets(2)
.Cells.Clear
With .Cells(1).Resize(n, 6)
.Value = b
With .Rows(1)
.BorderAround Weight:=xlThin
.Interior.ColorIndex = 44
End With
.Font.Name = "calibri"
.Font.Size = 10
.BorderAround Weight:=xlThin
.Borders(xlInsideVertical).Weight = xlThin
.VerticalAlignment = xlCenter
.Columns.AutoFit
End With
.Activate
End With
Application.ScreenUpdating = True
End Subklin89