popeyem
Habitué
Bonjour à tous, au forum,
Alors voila, ça fait pas mal de temps que je suis les forums pour trouver des solutions à de menus problèmes sous excel ou autre. Cela à tout le temps été efficace, en cherchant on trouve quasiment tout le temps ce que l'on veut et même plus quelques fois.
Outil pratique, ce partage de connaissances est bénéfique pour tous! Merci à ceux qui le font vivre.
Mais là.. j'en appelle aux connaissances des chevronnés (ou pas) du VBA pour la construction d'une macro somme toute assez simpliste dans l'idée mais qui me pose des problèmes quant à sa programmation. Je suis débutant et je précise que j'ai envie d'apprendre et de comprendre surtout.
Donc, pour résumer:
- un erp me produit 10 rapports à la demande, sous format excel, correspondant à 10 pays différents pour les chiffres d'un mois.
- J'ai besoin de prendre les données de ces rapports (sans les ouvrir si possible) pour les coller dans un classeur Analysis contenant 11 onglets, dont 10 contiennent chacun les chiffres d'un pays. La structure de destination est la même que celle du fichier source pour eviter un trop gros travail.
- Je dois coller des plages discontinues (Une date, soit une cellule, le nom du pays soit une autre cellule et enfin la plage de valeurs)
- Le but etant que chaque mois, je n'ai qu'a appuyer sur un bouton MAJ que je vais parametrer pou r que les chiffres arrivent.
J'aimerais donc trouver un code pour
1. Si le mois choisi est celui voulu (=si le mois du fichier source est le mois choisi dans le rapport Analysis en onglet 11, alors colle-moi les valeurs, sinon mets moi un message d'erreur parametrable)
Ci-dessous un bout de code pour 1 pays seulement:
[cpp]Sub MiseAJour()
'la macro MiseAJour permettra de mettre à jour, en fonction du mois, les données extraites du systeme dans un rapport excel.
'Le but etant d'eviter le copier/coller manuel de tableaux (structure fixe dans le fichier de destination)
'Copie de la date de mise à jour LAM
Workbooks.Open("\\Fr\...\SourcePays1.xls").Sheets("Sheet1").Range("$A$25").Copy
Workbooks("Analysis.xls").Sheets("Pays1").Activate
ActiveSheet.Paste Destination:=Range("$B$5")
With Range("$B$5")
.Font.ColorIndex = 3
.Font.Size = 8
.HorizontalAlignment = xlLeft
End With
'Copie du nom du pays
Workbooks("SourcePays1.xls").Sheets("Sheet1").Range("$B$10").Copy
Workbooks("Analysis.xls").Sheets("Pays1").Activate
ActiveSheet.Paste Destination:=Range("$B$8")
'Copie/collage (spécial) depuis SourcePays1 des valeurs du tableau pour Analysis, feuille Pays1.
Workbooks("SourcePays1.xls").Sheets("Sheet1").Range("$B$12:$H$24").Copy
Workbooks("Analysis.xls").Sheets("Pays1").Activate
ActiveSheet.Paste Destination:=Range("$B$10:$H$22")
End Sub[/cpp]
Pour l'instant mes 2 premiers pb sont:
- au niveau de la copie du nom pays, ce sont des cellules fusionnées tant dans la source que dans la destination. Donc erreur
- Je vais avoir plusieurs plages de cellules, du genre B12:H24, J1224, R12:X24 à copier coller. Utilisation de Union(Range("..."), Range("...")) ?
Enfin, je dois faire ça pour 10 rapports differents donc pour les 10 onglets de mon fichier Analysis..... Unn moyen de structurer tout ça ??
J'ai peur que ce soit lourd à traiter et finalement un peu compliqué à faire..
Toute critique et proposition sont les bienvenues.
Merci bien! (surtout d'avoir été jusqu'au bout!)
Nicolas
Alors voila, ça fait pas mal de temps que je suis les forums pour trouver des solutions à de menus problèmes sous excel ou autre. Cela à tout le temps été efficace, en cherchant on trouve quasiment tout le temps ce que l'on veut et même plus quelques fois.
Outil pratique, ce partage de connaissances est bénéfique pour tous! Merci à ceux qui le font vivre.
Mais là.. j'en appelle aux connaissances des chevronnés (ou pas) du VBA pour la construction d'une macro somme toute assez simpliste dans l'idée mais qui me pose des problèmes quant à sa programmation. Je suis débutant et je précise que j'ai envie d'apprendre et de comprendre surtout.
Donc, pour résumer:
- un erp me produit 10 rapports à la demande, sous format excel, correspondant à 10 pays différents pour les chiffres d'un mois.
- J'ai besoin de prendre les données de ces rapports (sans les ouvrir si possible) pour les coller dans un classeur Analysis contenant 11 onglets, dont 10 contiennent chacun les chiffres d'un pays. La structure de destination est la même que celle du fichier source pour eviter un trop gros travail.
- Je dois coller des plages discontinues (Une date, soit une cellule, le nom du pays soit une autre cellule et enfin la plage de valeurs)
- Le but etant que chaque mois, je n'ai qu'a appuyer sur un bouton MAJ que je vais parametrer pou r que les chiffres arrivent.
J'aimerais donc trouver un code pour
1. Si le mois choisi est celui voulu (=si le mois du fichier source est le mois choisi dans le rapport Analysis en onglet 11, alors colle-moi les valeurs, sinon mets moi un message d'erreur parametrable)
Ci-dessous un bout de code pour 1 pays seulement:
[cpp]Sub MiseAJour()
'la macro MiseAJour permettra de mettre à jour, en fonction du mois, les données extraites du systeme dans un rapport excel.
'Le but etant d'eviter le copier/coller manuel de tableaux (structure fixe dans le fichier de destination)
'Copie de la date de mise à jour LAM
Workbooks.Open("\\Fr\...\SourcePays1.xls").Sheets("Sheet1").Range("$A$25").Copy
Workbooks("Analysis.xls").Sheets("Pays1").Activate
ActiveSheet.Paste Destination:=Range("$B$5")
With Range("$B$5")
.Font.ColorIndex = 3
.Font.Size = 8
.HorizontalAlignment = xlLeft
End With
'Copie du nom du pays
Workbooks("SourcePays1.xls").Sheets("Sheet1").Range("$B$10").Copy
Workbooks("Analysis.xls").Sheets("Pays1").Activate
ActiveSheet.Paste Destination:=Range("$B$8")
'Copie/collage (spécial) depuis SourcePays1 des valeurs du tableau pour Analysis, feuille Pays1.
Workbooks("SourcePays1.xls").Sheets("Sheet1").Range("$B$12:$H$24").Copy
Workbooks("Analysis.xls").Sheets("Pays1").Activate
ActiveSheet.Paste Destination:=Range("$B$10:$H$22")
End Sub[/cpp]
Pour l'instant mes 2 premiers pb sont:
- au niveau de la copie du nom pays, ce sont des cellules fusionnées tant dans la source que dans la destination. Donc erreur
- Je vais avoir plusieurs plages de cellules, du genre B12:H24, J1224, R12:X24 à copier coller. Utilisation de Union(Range("..."), Range("...")) ?
Enfin, je dois faire ça pour 10 rapports differents donc pour les 10 onglets de mon fichier Analysis..... Unn moyen de structurer tout ça ??
J'ai peur que ce soit lourd à traiter et finalement un peu compliqué à faire..
Toute critique et proposition sont les bienvenues.
Merci bien! (surtout d'avoir été jusqu'au bout!)
Nicolas