Scindage date début - date fin

Bonjour à tous,

Je me permets de vous solliciter car je rencontre actuellement un problème que je n'arrive pas à résoudre avec les post déjà existant que j'ai pu lire depuis quelques jours.

Dans mon tableau j'ai une ligne produit avec plusieurs colonnes (ex : référence, lieu, couleur, date début et date fin). Et j'aimerais scinder cette ligne en plusieurs fois. Je m'explique pour chaque date comprise entre date de début et fin avoir une ligne reprenant la référence, lieu et couleur de la ligne de base.

De peur de ne pas avoir été très clair, je vous joints à mon post un fichier excel expliquant ce que je n'arrive pas à faire automatiquement.

Merci d'avance de votre aide à tous.

15swol.xlsx (9.71 Ko)

Bonjour le forum,

G3 :

=D3

G4 :

=SIERREUR(SI(G3=$E$3;"";G3+1);"")

A tirer vers le bas.

H3 :

=SI(ESTNUM($G3);A$3;"")

A tirer vers la droite, puis vers le bas.

Bonjour,

Une proposition à étudier.

Cdlt.

8swol.xlsm (23.74 Ko)
Option Explicit

Public Sub DEMO()
Dim wb As Workbook
Dim wsData As Worksheet, wsTable As Worksheet
Dim tbl As Variant, Arr() As Variant
Dim Table As ListObject
Dim rStart As Range
Dim I As Long, J As Long, k As Long
Dim n As Long, m As Long
    Application.ScreenUpdating = False
    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("Données brutes")
    tbl = wsData.ListObjects(1).DataBodyRange.Value
    Set wsTable = wb.Worksheets("Données normalisées")
    Set Table = wsTable.ListObjects(1)
    With Table
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        Set rStart = .InsertRowRange.Cells(1)
    End With
    For I = 1 To UBound(tbl)
        n = CDate(tbl(I, 5)) - CDate(tbl(I, 4)) + 1
        m = 0
        For J = 1 To n
            ReDim Preserve Arr(4, k + 1)
            Arr(0, k) = CLng(tbl(I, 4) + m)
            Arr(1, k) = tbl(I, 1)
            Arr(2, k) = tbl(I, 2)
            Arr(3, k) = tbl(I, 3)
            k = k + 1
            m = m + 1
        Next J
    Next I
    rStart.Resize(UBound(Arr, 2), 4).Value = Application.Transpose(Arr)
    Erase Arr
End Sub

Bonjour à vous deux,

Merci à tous les deux pour vos réponses.

Pour la première réponse le problème c'est que ca fonctionne pour une ligne mais n'enchaine pas sur l'ensemble des lignes.

La seconde réponse de Jean-Eric c'est super c'est exactement simple et clair. Par contre, j'ai un petit soucis comment je fais pour augmenter mon nombre de colonne ? car dans le tableau envoyé c'était un exemple créé de toute pièce. Et j'aimerais rajouter des colonnes désormais quelles sont les lignes de code que je dois modifier pour ça ?

En vous remerciant pour votre temps et votre gentillesse.

Bonjour,

Tu ne pouvais pas envoyer dès le départ un fichier représentatif de tes vraies données ?

Tu sais donc ce qu'il te reste à faire.

Cdlt.

Jean Eric,

Voici le tableau ou j'ai modifier les donner dans les colonnes pour des raisons de confidentialités. Mais sinon c'est le bon nombre de colonnes par contre les lignes peuvent être plus nombreuses.

Merci encore

12swol2.xlsx (14.04 Ko)
Rechercher des sujets similaires à "scindage date debut fin"