Automatisation fichier mensuel

Résolu/Fermé
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 - 9 mars 2011 à 22:16
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 - 18 mars 2011 à 01:42
Bonjour,

J'aurais besoin d'aide pour automatiser un nouveau fichier excel. La dernière fois déjà, le forum m'a bien aidé, (dédicace à ccm81).

Aujourd'hui, j'aimerais donc automatiser une autre tâche répétitive.

C'est fichier excel qu'il faut remplir en allant chercher des données dans un autre fichier.

J'ai regroupé les feuilles dans un seul classeur pour que ce soit plus facile.

J'explique:

On trouve les feuilles "Novedades OPENCOR" et "PROMOCIONES OPENCOR" qu'il faut remplir à l'aide des données situées sur les différentes feuilles Abril I, II, III, IV et V

L'objectif principal est de remplir la feuille Novedades OPENCOR de tous les nouveaux lancements qui ont lieu pendant le mois d'avril (par exemple) et de remplir la feuille Promociones OPENCOR de toutes les promotions du mois. J'utilise donc à chaque fois le fichier du mois dernier et je le mets à jour avec les nouvelles données.

Les feuilles "NOVEDADES OPENCOR" et "Promociones OPENCOR" sont donc un ensemble de petits tableaux qui reprennent toutes les donées utiles pour les Lanzamientos et les Promociones.

Je dois donc aller dans la feuille "abril I", regarder s'il y a des "Lanzamientos" (on les distingue des promociones car les lanzamientos ont une colonne unidades et pas les promociones).

Je vois donc que NTDVD VANITY par exemple est un lanzamiento puisqu'il a une colonne Unidades. Je copie donc la plage A15:E19 (car les colonnes qui m'intéressent sont toujours les mêmes : TITULO, EAN, FERT, Precio Tarifa, PVPR) et colle en valeur vers la feuille "NOVEDADES OPENCOR". Je dois changer le nom du Lanzamiento par celui qui se trouve dans la feuille "abril I". Ici donc NTDVD VANITY. Je me rends compte aussi qu'il y a trop de lignes par rapport à ce dont j'ai besoin. Donc je dois défusionner les cellules A1:A11 et H2:H11 puis supprimer les lignes.

Et je dois faire ça pour tous les Lanzamientos qui se trouvent dans les feuilles abril I,II,III,IV et V.

ça, c'est pour la partie novedades.

Maintenant, la partie promociones est un peu différente.

Pour les différencier, les promos ont une colonne DTO.

Je dois donc copier les données situées dans les colonnes TITULO, EAN et FERT vers la feuille "PROMOCIONES OPENCOR" dans les colonnes PROMO..., Codigo de barras et REF WHV. Pour remplir les colonnes suivantes, voici ce que je dois faire.

Pour le pvp actual, je vais dans les feuilles d'abril I,II,III,IV,V et je récupère les données dans les colonnes pvpr actual.

Pour la colonne tarifa actual ("PROMOCIONES OPENCOR"), je récupère les données dans Precio tarifa ("ABRIL I,II,III,IV ou V).

Le nuevo pvp ("PROMOCIONES OPENCOR"), je le trouve dans PVPR Promo ("ABRIL I,II,III,IV ou V).

Le nuevo tarifa ("PROMOCIONES OPENCOR"), je le trouve dans Precio tarifa promo ("ABRIL I,II,III,IV ou V").

On remarque sur la feuille ("PROMOCIONES OPENCOR") une bande jaune. Dans ces cellules fusionnées, je dois récupérer la fecha inicio et fecha fin qui se trouvent dans la feuille abril I,II,III,IV ou V en dessous de chaque petit tableau d'une promocion pour écrire une phrase du genre "PROMO VALIDE DU" & les dates situées sous le tableau de promo en question sur la feuille (abril...).

Dernier détail, il se peut que pour les promos, les produits changent de prix au cours du mois. On le sait car dans les feuilles d'abril, ce sont les lignes colorées en vert clair qui subiront un changement de prix. D'ailleurs une bande verte claire vient légender cela avec la date de changement et le re-pricing, etc.
Cette bande, je dois la copier juste en dessous de la bande jaune dont j'ai parlé qui se trouve dans la feuille promociones.

Et comme pour las novedades, il se peut que, comme j'utilise le fichier du mois précédent et que je le modifie, il y ait trop ou pas assez de ligne. Il faut donc que j'adapte chaque petit tableau au nombre d'articles.

A chaque fois Lanzamiento ou Promo sont séparées par des lignes blanches, ça je dois le garder aussi. Et enfin, juste parce qu'ils trouvent ça plus esthétique, mes patrons me demandent aussi de bien fusionner les colonnes A et H des petits tableaux situés sur NOVEDADES OPENCOR, et les colonnes A, J et les lignes jaunes et vertes de la feuille PROMOCIONES OPENCOR. Je le dis parce que donc quand je dois supprimer ou ajouter des lignes dans ces petits tableaux, forcément excel n'est pas content.


Voilà, j'espere qu'on me comprendra. C'est un travail qu'on doit surement pouvoir automatiser. J'ai déja commencé a faire des macros, mais a chaque fois, je suis plus très loin pour les lanzamientos, mais j'ai encore du mal parce que ce sont plusieurs boucles dans d'autres boucles et j'ai du mal a trouver le code pour donner la priorité aux différentes boucles quand c'est néssaire.

Voici le lien de mon fichier

Merci beaucoup

http://www.cijoint.fr/cjlink.php?file=cj201103/cijYsaj3vD.xls

Configuration: Windows XP / Firefox 3.6.15/Excel 2003
A voir également:

12 réponses

Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
Modifié par Pimp92a le 15/03/2011 à 16:39
Salut,

maintenant j'arrive à créer une feuille par rapport au modele, récupérer les lignes qui répondent aux critères, et savoir combien de lignes chaque tableau fait.

Mais je n'arrive pas à mettre les lignes dans la nouvelle feuille créée de manière ordonee et je n'arrive pas non plus à changer le nombre de lignes si necessaire (toutes les infos sont dans mon precedent message).

Je mets mon code:

Option Explicit 

Const modele_novedades = "modele_novedades" 
Const modele_promociones = "modele_promociones" 
Const FMod = "modele_novedades" 
Const PremCoD = 1 
Const CoTituloD = 1 
Const CoTituloA = 2 
Const CoEAND = 2 
Const CoEANA = 3 
Const CoFERTD = 3 
Const CoFERTA = 4 
Const CoPTarifaD = 4 
Const CoPTarifaA = 5 
Const CoPVPRD = 5 
Const CoPVPRA = 6 
Const PremliTabA = 2 
Const PremCoTabD = 1 
Const DerCod = 8 

Sub Test() 

Dim DerLiD As Long 
Dim DerCod As Long 
Dim liD As Long, coD As Long, liA As Long, coA As Long 
Dim FArr As String 
Dim liTabA As Long 
Dim nbarticles As Long 
Dim nbLignes As Long, nuLignes As Long 
Dim TituloD As String 
Dim EAND As String 
Dim PrecioTarifaD As String, PVPR As String 
Dim pedidoD As Variant 
Dim fertD As String 
Dim unidades As Variant 
Dim FDep As String 
Dim Feuille As Worksheet 
Dim rng As Range 
Dim n°L As Long 
Dim d°L As Long 
Dim nbL As Long 
Dim FActive As Worksheet 


FArr = "NOVEDADES OPENCOR" 
FDep = Worksheets(3).Name 
Sheets(FMod).Copy After:=Sheets(Sheets.Count) 
ActiveSheet.Name = FArr 
DerCod = Sheets(FDep).Cells(2, 7).Column 
DerLiD = Sheets(FDep).Cells(65536, PremCoD).End(xlUp).Row 
liTabA = PremliTabA 



For Each Feuille In Worksheets 

For liD = 1 To 2000 

If Cells(liD, 8) = "" And Cells(liD, 1) <> "" And Cells(liD, 2) <> "" And Cells(liD, 3) <> "" And Cells(liD, 4) <> "" And Cells(liD, 5) <> "" And Cells(liD, 6) <> "" And Cells(liD, 7) <> "" And Cells(liD, 1) <> "TITULO" Then 
nbLignes = nbLignes + 1 
MsgBox liD 

TituloD = Sheets(ActiveSheet.Name).Cells(liD, CoTituloD) 
EAND = Sheets(ActiveSheet.Name).Cells(liD, CoEAND) 
fertD = Sheets(ActiveSheet.Name).Cells(liD, CoFERTD) 
PrecioTarifaD = Sheets(ActiveSheet.Name).Cells(liD, CoPTarifaD) 
PVPR = Sheets(ActiveSheet.Name).Cells(liD, CoPVPRD) 

Sheets(FArr).Cells(liD, CoTituloA).Value = TituloD 
Sheets(FArr).Cells(liD, CoTituloA + 1).Value = EAND 
Sheets(FArr).Cells(liD, CoTituloA + 2).Value = fertD 
Sheets(FArr).Cells(liD, CoTituloA + 3).Value = PrecioTarifaD 
Sheets(FArr).Cells(liD, CoTituloA + 4).Value = PVPR 


End If 


Next liD 


For n°L = 1 To 2000 
     
n°L = n°L + 1 
    If Cells(n°L, 8) = "" And Cells(n°L, 1) <> "" And Cells(n°L, 2) <> "" And Cells(n°L, 3) <> "" And Cells(n°L, 4) <> "" And Cells(n°L, 5) <> "" And Cells(n°L, 6) <> "" And Cells(n°L, 7) <> "" Then 
      nbL = Cells(n°L, 1).CurrentRegion.Rows.Count - 2 
     'MsgBox nbL 
      n°L = n°L + nbL 
    End If 
Next n°L 



For nuLignes = 1 To nbL 

Next nuLignes 

Feuille.Activate 

Next Feuille 

End Sub 







Attention, comme j'ai fait beaucoup d'essais, j'ai des variables qui servent plus a rien.

Je n'ai donc pas nettoyé mon code

Merci d'avance
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
Modifié par Pimp92a le 16/03/2011 à 09:51
Je nettoie mon code pour que ce soit plus lisible.

J'ai mis des msgbox pour qu'on comprenne mieux mon probleme. J'arrive a recuperer les infos dont j'ai besoin (numeros de lignes qui répondent à mes critères + nombre de lignes de chaque petit tableau. Maintenant ce que je n'arrive pas à faire, c'est premièrement la boucle qui permet de recuperer chaque numero de lignepour inserer les infos dans la feuille NOVEDADES OPENCOR. Ensuite, je n'arrive pas a creer des lignes en fonction du nombre de lignes qui composent chaque petit tableau et recreer la mise en forme dans la nouvelle feuille.

Merci,


Option Explicit 

Const modele_novedades = "modele_novedades" 
Const modele_promociones = "modele_promociones" 
Const FMod = "modele_novedades" 
Const PremCoD = 1 
Const CoTituloD = 1 
Const CoTituloA = 2 
Const CoEAND = 2 
Const CoEANA = 3 
Const CoFERTD = 3 
Const CoFERTA = 4 
Const CoPTarifaD = 4 
Const CoPTarifaA = 5 
Const CoPVPRD = 5 
Const CoPVPRA = 6 
Const PremliTabA = 2 
Const PremCoTabD = 1 

Sub Test() 

Dim DerLiD As Long 
Dim DerCod As Long 
Dim liD As Long 
Dim FArr As String 
Dim FDep As String 
Dim Feuille As Worksheet 
Dim n°L As Long 
Dim d°L As Long 
Dim nbL As Long 
Dim x As Long 
FArr = "NOVEDADES OPENCOR" 
FDep = Worksheets(3).Name 
Sheets(FMod).Copy After:=Sheets(Sheets.Count) 
ActiveSheet.Name = FArr 
DerCod = Sheets(FDep).Cells(2, 7).Column 
DerLiD = Sheets(FDep).Cells(65536, PremCoD).End(xlUp).Row 

For Each Feuille In Worksheets 

For liD = 1 To 2000 

If Cells(liD, 8) = "" And Cells(liD, 1) <> "" And Cells(liD, 2) <> "" And Cells(liD, 3) <> "" And Cells(liD, 4) <> "" And Cells(liD, 5) <> "" And Cells(liD, 6) <> "" And Cells(liD, 7) <> "" And Cells(liD, 1) <> "TITULO" Then 

MsgBox "Ligne n°" & liD 
Sheets(FArr).Cells(2, CoTituloA).Value = Cells(liD, 1).Value 
Sheets(FArr).Cells(2, CoTituloA + 1).Value = Cells(liD, 2).Value 
Sheets(FArr).Cells(2, CoTituloA + 2).Value = Cells(liD, 3).Value 
Sheets(FArr).Cells(2, CoTituloA + 3).Value = Cells(liD, 4).Value 
Sheets(FArr).Cells(2, CoTituloA + 4).Value = Cells(liD, 5).Value 

End If 




Next liD 
For n°L = 1 To 2000 
n°L = n°L + 1 
    If Cells(n°L, 8) = "" And Cells(n°L, 1) <> "" And Cells(n°L, 2) <> "" And Cells(n°L, 3) <> "" And Cells(n°L, 4) <> "" And Cells(n°L, 5) <> "" And Cells(n°L, 6) <> "" And Cells(n°L, 7) <> "" Then 
      nbL = Cells(n°L, 1).CurrentRegion.Rows.Count - 2 
     MsgBox "Il y a " & nbL & " ligne(s) dans ce tableau" 
      n°L = n°L + nbL 
       
    End If 

Next n°L 

Feuille.Activate 

Next Feuille 
End Sub 



Merci par avance
0
ccm81 Messages postés 10904 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 décembre 2024 2 428
16 mars 2011 à 17:02
re

j'ai fait une tentative pour la feuille NOVEDADES OPENCOR
je suis parti du principe que toutes tes feuilles mensuelles ont le même format

http://www.cijoint.fr/cjlink.php?file=cj201103/cijkHnF2Ou.xls

tout ceci reste bien sur a tester et à améliorer

bonne suite
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
Modifié par Pimp92a le 16/03/2011 à 18:32
Salut,

c'est magnifique, ça fonctione très bien!! Je continue à le tester.

Merci beaucoup!! Tu me fais gagner beaucoup de temps encore une fois (ainsi qu'aux futurs stagiaires qui prendront ma place).

Maintenant je vais essayer de mon côté de faire la partie promo en m'appuyant sur ton code (qu'il faut déjà que je pige complètement parce que j'étais loin du compte.

Merci pour ton aide précieuse.

Après ce fichier, c'est fini j'aurai automatisé toutes les tâches administratives (y en avait quand même une dizaine à la base)!!

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10904 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 décembre 2024 2 428
Modifié par ccm81 le 16/03/2011 à 21:01
re

1. j'ai un peu simplifié le code (il n'y a plus distinction entre la 1° ligne du tableau et les suivantes (une scorie d'une précédente version)
2. j'ai mis la colonne G (Unidades) comme test plutot que la colonne B (Lanzamiento)

http://www.cijoint.fr/cjlink.php?file=cj201103/cij60roiqh.xls

La feuille promo devrait ressembler à la novedades (en un peu plus compliqué)

bon courage

RQ. un oubli, tu ajoutes ça en fin de module (à toi d'y ajouter le code)

Public Sub Promo(NF As String)  

End Sub
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
17 mars 2011 à 09:40
oK je m'y mets dès maintenant.

Je vais m'inspirer de ton code des lanzamientos pour faire les promos.


Merci pour tout ;)
0
ccm81 Messages postés 10904 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 décembre 2024 2 428
17 mars 2011 à 10:15
re
une modif qui se passe des feuilles modeles
http://www.cijoint.fr/cjlink.php?file=cj201103/cijTzPla0z.xls
bonne suite
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
Modifié par Pimp92a le 17/03/2011 à 16:05
Bon,

J'ai réussi à récupérer les données des colonnes D, E, G, H pour les promos.

Tout est bon sauf quelques points et je bloque la-dessus:


La ligne jaune aussi je n'arrive pas à l'incorporer au bon endroit, a chaque fois elle se glisse entre deux lignes de produits.

Enfin, la ligne verte qui apparait certaines fois quand des produits changent de prix au cours d'une promo, ça aussi je n'arrive pas à la récupérer.

Ce sont des détails mais je sais que mes patrons me le demanderont.

Je continue à chercher de mon côté, merci beaucoup pour tout.

http://www.cijoint.fr/cjlink.php?file=cj201103/cijdt98yi0.xls

A+
0
ccm81 Messages postés 10904 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 décembre 2024 2 428
Modifié par ccm81 le 17/03/2011 à 17:28
re
je ne sais pas si tu es arrivé au bout,
voila quand même quelque chose qui doit s'approcher du but, il faut dire que la pluie m'a bien coincé dedans !!!!

http://www.cijoint.fr/cjlink.php?file=cj201103/cijwfdZZyg.xls

à vérifier, tester et améliorer

bon courage

RQ. une erreur dans sub Promo(NF) (je n'avais pas tenu compte des reprice)

         ' la bande jaune
         NumLigP = NumLigP + 1
         If RepriceDansTableau Then
           ActiveSheet.Range("A" & NumLigP).Value = P1 & .Cells(LigNF + 3, ColDateNF).Value & P2 & .Cells(LigNF + 4, ColDateNF).Value
         Else
           ActiveSheet.Range("A" & NumLigP).Value = P1 & .Cells(LigNF + 2, ColDateNF).Value & P2 & .Cells(LigNF + 3, ColDateNF).Value
         End If
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
17 mars 2011 à 18:31
Salut,

Ouais j'avais réussi à avoir la bande jaune, mais pas la verte et puis la mise en forme que tu proposes est parfaite.

Je te remercie beaucoup pour le temps consacré!!!

Tu me fais gagner beaucoup de temps encore une fois.

Et j'ai appris plein de choses grâce à toi sur la mise en forme en vba (notamment).

Je t'inclus bien sûr dans les crédits du code en commentaire comme j'ai fait dans le premier fichier.

Le sujet est maintenant résolu!

Je pense maintenant que pendant un moment je ne t'embêterai plus, je laisse le soin à d'autres de le faire ;)


Merci pour tout.

A+
0
ccm81 Messages postés 10904 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 décembre 2024 2 428
17 mars 2011 à 20:20
re

de rien, ça maintient les neurones et rassures toi, si on trouvait ça embêtant ....

Plus sérieusement, tout le code suppose que la mise en forme des feuilles mensuelles reste rigoureusement identique, donc ...

bonne suite dans ton travail
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
18 mars 2011 à 01:42
Oui oui c'est toujours la même mise en forme, c'est d'ailleurs pour ça que je voulais l'automatiser.

Je te remercie ccm81

A+
0