Créer par mois une série de fichier liée à plusieurs variables

Signaler
Messages postés
5
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
3 mars 2009
-
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
-
 Bonjour,

J'ai besoin pour mon travail de créer par mois une série de fichier par agence dans lesquels il y aurait dans chaque onglet les vendeurs avec leurs ventes et quelques statistiques.

Je vous met le début de mon travail

    Dim Rep                as integer 'L'entité 
    Dim Agence         Format texte du style Nom de l'agence_numéro de département 
    Dim Mois as date    ' Format Date         
    Dim Entité                ' format nom_matricule  
    Dim Newfile1 as text c'est le nom de l'agence du vendeur sous le format agence _n° de département
    Dim Newfile2 as text même format ces deux variables représentent chacune une agence si ces deux agences sont différentes alors créer un nouveau fichier sous le nom agence & mois et coller la feuille source sur l'onglet sinon coller cette étape est décrite plus bas.
     

    ' ---------------------------------------------------------
    ' TROUVER DYNAMIQUEMENT  LE NB DE LIGNES ...

    ' Selection.CurrentRegion.Select            'CTRL + * => Sel tableau
    ' nbligne = selection.rows.Count
    ' ---------------------------------------------------------

   
    Windows("Reporting commercial vers powerpoint").Activate
                   
                           ' on charge dans une variable le contenu d'une cellule
       
        Sheets("New entity").Select     '
            Agence = Range("A15").Text sous la forme
            Entite = Range("A16").Text
            Mois = Range("D13").Text
       
   
    For Rep = 1 To 200  'la boucle tourne autant de fois qu'il y a de vendeurs 200 est un exemple j'aimerai compter dans une colonne définie le nombre de cellules non vides ce qui conduit à déterminer n au lieu de 200    
    
     'Changes rep
        Windows("Reporting commercial vers powerpoint").Activate 'le Fichier source
        Sheets("New entity").Select  ' feuille source de ce fichier d'où on colle la feuille 
        Range("F2").Value = Rep
        
    Calculate 'mise à jour liée à Hyperion la feuille source contient une liste déroulante dans laquelle on a tous les vendeurs 1à n à chaque vendeur apparaît ses statistiques liés à une base de données.

    Sheets("New entity").Select      ' Selection de feuille
    Sheets("New entity").Copy
   
        'Gets file names
        'Copier new diapo dans un nouveau classeur et l'enregistrer sous C:/mes documents 

    
        ActiveWorkbook.SaveAs Filename:= _
    "c:\Mes documents" & Agence & "-" & Mois & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
        Sheets("New entity").Name = Entite 'la feuille collée dans le fichier Agence&mois se nomme comme l'entité dans la liste déroulante 
Range("A1").Activate
        'Looks if it needs to create a new file
   
        Windows("Reporting commercial vers powerpoint").Activate

        Newfile1 = Sheets("Engine").Cells(Rep + 3, 7).Value
        Newfile2 = Sheets("Engine").Cells(Rep + 4, 7).Value
   
    ' ---------------------------------------------------------
    ' soit un rep exist => duplique la feuille (ELSE)
    ' soit pas de rep => enregistre (THEN)
    ' ---------------------------------------------------------

       
        If Newfile1 <> Newfile2 Then ' si les deux agences sont différentes alors on créer un fichier et on colle la feuille new entity" du fichier source dans le fichier Agence & mois
            Sheets("New entity").Select
            Sheets("New entity").Copy
            ActiveWorkbook.SaveAs Filename:= _
    "c:\mes doc" & Agence & "-" & Mois & ".xls", FileFormat _
    :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
    False, CreateBackup:=False
       
        Else    sinon je copie new entity avant feuille (1) de agence & mois
            Sheets("New entity").Select
            Sheets("New entity").Copy before:=Workbooks(Agence & "-" & Mois & ".xls").Worksheets(1)
   
           
       
        End If
        Sheets("New entity").Select
        Sheets("New entity").Name = Entite 
            
    ActiveWorkbook.Save
   
   
Next Rep
           
End Sub

je bloque au moment où je dois passer dans la liste déroulante du rep 1 au 2, le 1 se colle bien dans l'onglet et correctement nommé, le fichier de même mais au rep 2 il colle une deuxième fois le rep 1 à côté créer un fichier refuse de le renommer normal l'agence est identique mais il colle bien le rep 2.
il y a des maladresses et des répétitions de lignes dans ce code mais j'aimerais avoir une méthode en fait c'est ma première macro qui suppose de manipuler des variables et je vous remercie par avance de votre patience.
C'est fastidieux à expliquer et relativement clair pourtant quand on l'a sous les yeux :-)
Bonne soirée,

3 réponses

Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Salut
Après analyse du code posté, et sur les commentaires, je penses qu'il faudrait affecter à la variable "Agence", le nom de l'agence lu et affecté à "Newfile2", qui est forcement différent de "Newfile1". Ce qui devrait résoudre le problème de fichier existant déjà.
Il se peut qu'il en soit de même pour la feuille à renommer en "Entité", je ne vois pas où ce fait sa nouvelle affectation.
Voila, c'est tout.

CNTJC
Messages postés
5
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
3 mars 2009

Salut,
Merci d'avoir pris du temps pour répondre.
Peux-tu m'expliquer comment faire plus précisement stp, je pensais qu'il suffisait de dimensionner Agence et de
renvoyer à une cellule variable ,qui dépend de l'entité choisie dans la liste déroulante, donc je crois l'avoir déjà affecté au nom de l'agence.

Je souhaite nommer chaque feuille au nom de l'entité.je pense que cela se fait après le End if sheet("New entity").name = Entite (après avoir coller évidemment la feuille "New entity").

Merci d'avance,


Arnaud,
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Salut
Si je saisie bien le problème il me semble qu'il y a chevauchement dans ce qui suit:
        Newfile1 = Sheets("Engine").Cells(Rep + 3, 7).Value





        Newfile2 = Sheets("Engine").Cells(Rep + 4, 7).Value




Quand Rep 2, Newfile1 correspond à la même cellule que Newfile2, quand Rep 1.
Sinon je ne vois rien d'autre de probant.
Bonne chance

CNTJC