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 ...
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
' ---------------------------------------------------------
' 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,
A voir également:
Créer par mois une série de fichier liée à plusieurs variables
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.
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").