Copier autant de lignes que de mois
Lesma17
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
J'espère que quelqu'un pourra m'aider. Ce forum m'a sauvé la mise un nombre incalculables de fois mais je n'ai pas trouvé la solution sur un post existant.
J'ai un problème simple : j'ai des dates de début et des dates de fin d'arrêt. Il faudrait que pour chaque arrêt, j'ai un nombre de lignes dupliquées égal au nombre de mois.
Par exemple, un arrêt du 02/02/2016 au 14/03/2016 :
une ligne qui reprend les données et qui borne du 02/02/2016 au 29/02/2016
une ligne qui reprend les données et qui borne du 01/03/2016 au 14/03/2016.
Voilà, j'espère que vous pourrez m'aider.
Je vous joins ce que j'ai déjà fait. Mais à l'étape suivante, je bloque : http://www.cjoint.com/c/GBdrfpj0oCZ
Merci énormément d'avance !
Lesma17
J'espère que quelqu'un pourra m'aider. Ce forum m'a sauvé la mise un nombre incalculables de fois mais je n'ai pas trouvé la solution sur un post existant.
J'ai un problème simple : j'ai des dates de début et des dates de fin d'arrêt. Il faudrait que pour chaque arrêt, j'ai un nombre de lignes dupliquées égal au nombre de mois.
Par exemple, un arrêt du 02/02/2016 au 14/03/2016 :
une ligne qui reprend les données et qui borne du 02/02/2016 au 29/02/2016
une ligne qui reprend les données et qui borne du 01/03/2016 au 14/03/2016.
Voilà, j'espère que vous pourrez m'aider.
Je vous joins ce que j'ai déjà fait. Mais à l'étape suivante, je bloque : http://www.cjoint.com/c/GBdrfpj0oCZ
Merci énormément d'avance !
Lesma17
A voir également:
- Copier autant de lignes que de mois
- Partage de photos en ligne - Guide
- Comment copier une vidéo de youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Formulaire en ligne de meta - Guide
- Historique copier coller - Guide
7 réponses
Bonjour
Peux tu envoyer un bout de ton fichier initial (avant ce que tu y as ajouté), sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu (sur une deuxième feuille)
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller".
RQ. Il va probablement falloir passer par une macro
Cdlmnt
Peux tu envoyer un bout de ton fichier initial (avant ce que tu y as ajouté), sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu (sur une deuxième feuille)
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller".
RQ. Il va probablement falloir passer par une macro
Cdlmnt
D'accord,
Voici le lien du nouveau fichier avec comme demandé en première feuille mon tableau de départ. Et en deuxième onglet l'exemple attendu :
http://www.cjoint.com/c/GBdtVx3pWlE
Merci beaucoup :D
Voici le lien du nouveau fichier avec comme demandé en première feuille mon tableau de départ. Et en deuxième onglet l'exemple attendu :
http://www.cjoint.com/c/GBdtVx3pWlE
Merci beaucoup :D
Bonjour,
Pourriez-vous me copier le code ici s'il vous plait ? Le serveur ôte les macros des fichiers externes de manière automatique.
Merci beaucoup !
Camille
Pourriez-vous me copier le code ici s'il vous plait ? Le serveur ôte les macros des fichiers externes de manière automatique.
Merci beaucoup !
Camille
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai réussi à récupérer le fichier. Cependant, comme je ne suis pas une pro en codage, pourriez-vous m'expliquer les constantes à définir ?
1. Pour intégrer la macro à ton fichier
1.1. Alt-F11 pour accéder à l'éditeur vba
1.2. Insertion/module pour créér le Module 1
1.3. Copier tout le code
2. les constantes
J'ai pris la même feuille (source et but) chez moi pour faciliter le contrôle
3. Tu ne dis pas si le résultat est celui attendu
Cdlmnt
1.1. Alt-F11 pour accéder à l'éditeur vba
1.2. Insertion/module pour créér le Module 1
1.3. Copier tout le code
2. les constantes
J'ai pris la même feuille (source et but) chez moi pour faciliter le contrôle
' constantes à modifier selon ta configuration Const FD = "Départ" ' nom de la feuille source Const conomFD = "A" ' colonne nom Const codddFD = "B" ' colonne date de debut Const coddfFD = "C" ' colonne date de fin Const lidebFD = 2 ' premiere ligne des données Const FR = "Départ" ' nom de la feuille but Const conomFR = "F" ' colonne nom Const codddFR = "G" ' colonne date de debut Const coddfFR = "H" ' colonne date de fin Const lidebFR = 2 ' premiere ligne des données Const annee = 2016 ' année à prendre en compte
3. Tu ne dis pas si le résultat est celui attendu
Cdlmnt
Bonjour,
J'ai testé la macro. Et elle m'affiche l'erreur "Erreur de compilation, variable non définie" au niveau de la ligne 7 du code :
Public Sub OK()
Dim liFD As Long, lifinFD As Long, dddFD As Date, ddfFD As Date
Dim nom As String, mddFD As Long, mdfFD As Long, addFD As Long, adfFD As Long
Dim dddFR As String, ddfFR As String, mddFR As Long, mdfFR As Long, mmm As Long, nbm As Long
Dim Tn(), Td(), Tf(), ddf As Date, derj As Long, nT As Long
lifinFD = Sheets(FD).Range(conomFD & Rows.Count).End(xlUp).Row
If lifinFD < lidebFD Then lifinFD = lidebFD
liFR = Sheets(FR).Range(conomFR & Rows.Count).End(xlUp).Row
If liFR < lidebFR Then liFR = lidebFR
nT = 0
For liFD = lidebFD To lifinFD
nom = Sheets(FD).Range(conomFD & liFD).Value
dddFD = Sheets(FD).Range(codddFD & liFD).Value
ddfFD = Sheets(FD).Range(coddfFD & liFD).Value
addFD = Year(dddFD)
adfFD = Year(ddfFD)
If addFD > annee Or adfFD < annee Then Exit Sub
mddFR = 1
If addFD = annee Then mddFR = Month(dddFD)
mdfFR = 12
If adfFD = annee Then mdfFR = Month(ddfFD)
nbm = mdfFR - mddFR + 1
nT = nT + nbm
ReDim Preserve Tn(1 To nT)
ReDim Preserve Td(1 To nT)
ReDim Preserve Tf(1 To nT)
For mmm = 1 To nbm
Tn(nT - nbm + mmm) = nom
dddFR = "01/" & Trim(Str(mmm)) & "/" & Trim(Str(annee))
Td(nT - nbm + mmm) = dddFR
If mmm = 12 Then
ddfFR = "31/12/" & Trim(Str(annee))
Tf(nT - nbm + mmm) = ddfFR
Else
derj = 31
Select Case mmm
Case 2: If annee Mod 4 = 0 Then derj = 29 Else derj = 28
Case 4, 6, 9, 11: derj = 30
End Select
ddfFR = Trim(Str(derj)) & "/" & Trim(Str(mmm)) & "/" & Trim(Str(annee))
Tf(nT - nbm + mmm) = ddfFR
End If
Next mmm
Next liFD
Sheets(FR).Range(conomFR & lidebFR).Resize(nT, 1) = Application.Transpose(Tn)
Sheets(FR).Range(codddFR & lidebFR).Resize(nT, 1) = Application.Transpose(Td)
Sheets(FR).Range(coddfFR & lidebFR).Resize(nT, 1) = Application.Transpose(Tf)
End Sub
Merci beaucoup pour votre aide,
J'ai testé la macro. Et elle m'affiche l'erreur "Erreur de compilation, variable non définie" au niveau de la ligne 7 du code :
Public Sub OK()
Dim liFD As Long, lifinFD As Long, dddFD As Date, ddfFD As Date
Dim nom As String, mddFD As Long, mdfFD As Long, addFD As Long, adfFD As Long
Dim dddFR As String, ddfFR As String, mddFR As Long, mdfFR As Long, mmm As Long, nbm As Long
Dim Tn(), Td(), Tf(), ddf As Date, derj As Long, nT As Long
lifinFD = Sheets(FD).Range(conomFD & Rows.Count).End(xlUp).Row
If lifinFD < lidebFD Then lifinFD = lidebFD
liFR = Sheets(FR).Range(conomFR & Rows.Count).End(xlUp).Row
If liFR < lidebFR Then liFR = lidebFR
nT = 0
For liFD = lidebFD To lifinFD
nom = Sheets(FD).Range(conomFD & liFD).Value
dddFD = Sheets(FD).Range(codddFD & liFD).Value
ddfFD = Sheets(FD).Range(coddfFD & liFD).Value
addFD = Year(dddFD)
adfFD = Year(ddfFD)
If addFD > annee Or adfFD < annee Then Exit Sub
mddFR = 1
If addFD = annee Then mddFR = Month(dddFD)
mdfFR = 12
If adfFD = annee Then mdfFR = Month(ddfFD)
nbm = mdfFR - mddFR + 1
nT = nT + nbm
ReDim Preserve Tn(1 To nT)
ReDim Preserve Td(1 To nT)
ReDim Preserve Tf(1 To nT)
For mmm = 1 To nbm
Tn(nT - nbm + mmm) = nom
dddFR = "01/" & Trim(Str(mmm)) & "/" & Trim(Str(annee))
Td(nT - nbm + mmm) = dddFR
If mmm = 12 Then
ddfFR = "31/12/" & Trim(Str(annee))
Tf(nT - nbm + mmm) = ddfFR
Else
derj = 31
Select Case mmm
Case 2: If annee Mod 4 = 0 Then derj = 29 Else derj = 28
Case 4, 6, 9, 11: derj = 30
End Select
ddfFR = Trim(Str(derj)) & "/" & Trim(Str(mmm)) & "/" & Trim(Str(annee))
Tf(nT - nbm + mmm) = ddfFR
End If
Next mmm
Next liFD
Sheets(FR).Range(conomFR & lidebFR).Resize(nT, 1) = Application.Transpose(Tn)
Sheets(FR).Range(codddFR & lidebFR).Resize(nT, 1) = Application.Transpose(Td)
Sheets(FR).Range(coddfFR & lidebFR).Resize(nT, 1) = Application.Transpose(Tf)
End Sub
Merci beaucoup pour votre aide,