Copier autant de lignes que de mois
Fermé
Lesma17
-
3 févr. 2017 à 18:08
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 - 7 févr. 2017 à 20:16
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 - 7 févr. 2017 à 20:16
A voir également:
- Copier autant de lignes que de mois
- Copier une vidéo youtube - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Super copier - Télécharger - Gestion de fichiers
- En ligne sur messenger alors que non ✓ - Forum Facebook
7 réponses
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
3 févr. 2017 à 20:30
3 févr. 2017 à 20:30
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
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
4 févr. 2017 à 10:10
4 févr. 2017 à 10:10
A tester
Cdlmnt
http://www.cjoint.com/c/GBejkjcAJmg
Cdlmnt
http://www.cjoint.com/c/GBejkjcAJmg
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 ?
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
Modifié par ccm81 le 6/02/2017 à 11:51
Modifié par ccm81 le 6/02/2017 à 11:51
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,
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
Modifié par ccm81 le 7/02/2017 à 21:09
Modifié par ccm81 le 7/02/2017 à 21:09
Désolé, il y a une variable qui a sauté
Ajoutes la ligne en gras
Dim Tn(), Td(), Tf(), ddf As Date, derj As Long, nT As Long
Dim liFR As Long
lifinFD = Sheets(FD).Range(conomFD & Rows.Count).End(xlUp).Row
Cdlmnt
Ajoutes la ligne en gras
Dim Tn(), Td(), Tf(), ddf As Date, derj As Long, nT As Long
Dim liFR As Long
lifinFD = Sheets(FD).Range(conomFD & Rows.Count).End(xlUp).Row
Cdlmnt