Création Macro avec boucle sur mois
Bonjour à tous,
Je souhaiterais créer une macro VBA pour récupérer les données d'un tableau croisé dynamique
Voir fichier joint :
Tableau croisé dynamique sous onglet CARNET
Fichier excel à remplir sous onglet FRESNOY
Mon tableau croisé contient en ligne : les références articles / en valeurs : les qté en kg / et en colonne : le mois en cours et les mois restants (toujours 6derniers mois) (juin juillet..etc..décembre)
Sur mon fichier excel du mois de juin, la macro fonctionne très bien.
Pas de problèmes.
Mon soucis sera pour remplir le fichier excel pour les mois suivants.
Comment faire pour créer une macro qui récupère les données du TCD et qui soit fonctionnelles sur tout les mois de l'année.
Explications :
Dans mon TCD la colonne N°8 correspond au mois de juin, juillet N°9, aout N°10...etc
Dans mon fichier excel à remplir, la colonne N°34 correspond au mois de juin, juillet N°35, Aout N°36..etc
Ma macro lui dit d'aller chercher les infos de la colonne 8 du TCD pour les coller dans la colonne 34 du fichier excel si les références d'artciles sont identiques. (respectivement colonne 2 du TCD et 3 du fichier excel)
Lorsque je passerai au mois suivant,
la colonne 8 sera juillet au lieu de Juin et dans mon fichier excel la colonne 34 sera celle du mois de juillet au lieu de juin.
merci donc de me dire comment faire pour récupérer les bonnes infos en sachant que chaque mois, le TCD sera incrémenter d'un mois.
Pour ne pas avoir les données du mois de juin sur juillet, celle de juillet sur aout...etc..etc..
Merci d'avance pour votre airde.
Cdlt
Momo
Voici la macro fonctionnelle pour le mois de juin.
Merci de me dire comment faire pour les mois suivants..
Voir fichier joints.
Sub carnetfresnoy()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim colJura, colJuira, colAora, colSeptra, colOctra, colNovra, colDecra, indspecra As Integer ''indice rationnel
Dim finra As Integer
Dim colJucarnet, colJuicarnet, colAocarnet, colSeptcarnet, colOctcarnet, indSpeccarnet, indgpestk As Integer '' indice carnet
Dim fin As Integer
Dim DIV As String
Dim FRES As String
DIV = "FRESNOY" '''division du programme, rationnel traité
carnet = "CARNET"
''''integre stock rettel
colJura = 34 ''indice colonne Juin dans le rationnel
colJuira = 35 ''indice colonne Juillet dans le rationnel
colAora = 36 '''indice colone Aout dans le rationnel
colSeptra = 37 '''indice colone Septembre dans le rationnel
colOctra = 38 '''indice colone Octobre dans le rationnel
colNovra = 39 '''indice colone Novembre dans le rationnel
colDecra = 40 '''indice colone Décembre dans le rationnel
indspecra = 3 ''indice de la specif dans le rationnel
fin = 218 ''dernière ligne du rationnel
colJuca = 8 ''indice colonne juin dans le carnet
colJuica = 9 ''indice colonne juillet dans le carnet
colAoca = 10 '''indice colone Aout dans le carnet
colSeptca = 11 '''indice colone Septembre dans le carnet
colOctca = 12 '''indice colone octobre dans le carnet
indGpeca = 3 ''indice du groupe dans le carnet
indspecca = 2 ''indice de la specif dans le carnet
i = 2
Do Until Worksheets(carnet).Cells(i, indGpeca).Value = "FRES" ''va jusqu'au spec Rettel
i = i + 1
Loop
'''Integre le carnet de la feuille dans le rationnel
Do While Worksheets(carnet).Cells(i, indGpeca).Value = "FRES"
j = 3
Do Until Worksheets(DIV).Cells(j, indspecra).Value = Worksheets(carnet).Cells(i, indspecca).Value Or Worksheets(DIV).Cells(j, indspecra + 1).Value = Worksheets(carnet).Cells(i, indspecca).Value
If j > fin Then
GoTo specsuivante
End If
j = j + 1
Loop
Worksheets(DIV).Cells(j, colJura).Value = Worksheets(DIV).Cells(j, colJura).Value + Worksheets(carnet).Cells(i, colJuca).Value
Worksheets(DIV).Cells(j, colJuira).Value = Worksheets(DIV).Cells(j, colJuira).Value + Worksheets(carnet).Cells(i, colJuica).Value
Worksheets(DIV).Cells(j, colAora).Value = Worksheets(DIV).Cells(j, colAora).Value + Worksheets(carnet).Cells(i, colAoca).Value
Worksheets(DIV).Cells(j, colSeptra).Value = Worksheets(DIV).Cells(j, colSeptra).Value + Worksheets(carnet).Cells(i, colSeptca).Value
Worksheets(DIV).Cells(j, colOctra).Value = Worksheets(DIV).Cells(j, colOctra).Value + Worksheets(carnet).Cells(i, colOctca).Value
Worksheets(carnet).Cells(i, 15).Value = "ok dans le rationnel"
specsuivante:
i = i + 1
Loop
End Sub
Si besoin d'autres infos ou si je n'ai pas été assez claire,
n'hésitez pas à me le faire savoir pour de futures demandes.
Sinon merci de votre attention et merci d'avance pour vos réponses qui, je l'espère, me seront d'une grande utilité.
Cdlt
Morgan
Cette demande est très importante.
D'autres topics contiennent des réponses assez claire.
Merci de faire votre possible pour me dépanner.
Cdlt
Morgan
Bonjour,
Je répond car tu m'as sollicité par MP. Ce n'est sûrement pas la meilleure chose à faire. On choisit les questions qui nous intéressent...
D'autres topics contiennent des réponses assez claire.
Sans doute que la question l'était aussi et le fichier fourni correct pour s'y prêter facilement.
Le tien ne ressemble à rien. Aucune règle des BdD n'est respectée. Il faudrait y passer 2 jours pleins pour essayer d'en tirer qcq chose. Pas envie...
De plus tu parles de pb pour les mois suivants et aucune zone de saisie n'est prévue pour eux. La moindre de chose est de fournir un fichier en accord avec la demande.
Par ailleurs, si tu réponds à ton propre post les helpers pensent que qcq'un est dessus puisqu'il y a des réponses. Attend 48h pour relancer.
Bon courage
eric
Salut Eric,
Désolé mais ce code est très claire.
En tant qu'ingénieur je pensais que tu le comprendrais.
Désolé que tu le comprennes pas.
Je t'ai "surrestimé".
Et pour info, il ne faut surement pas 2 jours pour créer ce code et le comprendre.
En tout cas merci quand même.
J'ai vu le problème avec Dan, qui lui ne trouve pas que "ça ressemble à rien" ou du moins il est assez poli pour ne pas me le dire.
Et tu sais, pour info, pas besoin de respecer les règles des bases de données pour faire fonctionner une macro quand on est plus à l'école.
Enfin bref,
Merci quand même mais je ne conseillerai pas ton aide à d'autres user.
Ciao
Bonjour,
J'ai vu le problème avec Dan
Aurais-tu posté ta demande sur d'autres forums ?
En tant qu'ingénieur tu comprendras que c'est contre-productif de bosser pour rien et qu'il est de bon ton de le signaler. Ca permet de voir ce qui a déjà été proposé et de voir l'avancée.
En tant qu'utilisateur de forum tu comprendras aussi qu'il est très mal vu de poster des doublons dans un même forum pour les même raisons. Si tu pouvais éviter. Merci
eric
Salut Eric,
j'ai envoyé un MP à Dan qui va se pencher ur le problème,
J'ai créé un topic comme tu me l'as demander et j'avais reposer ma question sur un autre topic avant que tu me demandes de créer le mien. Je comprends bien que les doublons sont un peu génants.
Je comprends bien ta réponse mais si tu pouvais jeter un oeil sur mon fichier ça serait sympa de ta part.
Sinon ce n'est pas grave.
En sachant que ma demande n'est pas si compliqué que ça...
Bonne journée eriiic et merci quand même
A+..
momo57 a écrit :Salut Eric,
Désolé mais ce code est très claire.
En tant qu'ingénieur je pensais que tu le comprendrais.
Désolé que tu le comprennes pas.
Je t'ai "surrestimé".
Et pour info, il ne faut surement pas 2 jours pour créer ce code et le comprendre.
En tout cas merci quand même.
J'ai vu le problème avec Dan, qui lui ne trouve pas que "ça ressemble à rien" ou du moins il est assez poli pour ne pas me le dire.
Et tu sais, pour info, pas besoin de respecer les règles des bases de données pour faire fonctionner une macro quand on est plus à l'école.
Enfin bref,
Merci quand même mais je ne conseillerai pas ton aide à d'autres user.
Ciao