picpic62
Messages postés3Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention29 mars 2009
-
25 mars 2009 à 14:27
picpic62
Messages postés3Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention29 mars 2009
-
29 mars 2009 à 13:32
Bonjour,
Je suis pas sur d'avoir posté exactement où il fallait mais je vous prie de m'excuser. J'ai quelques problèmes avec Excel. Je dois générer plus ou moins 4000 fiches qui comportent chacune 6 champs de saisie. Mais je n'ai pas d'expérience en ce qui concerne les macro et encore moins en ce qui concerne VB.
Voici mon problème:
J'ai une "fiche" type (vierge) qui comporte les 6 champs à remplir. J'ai un autre document excel avec les données (rangées dans un tableau) à insérer dans chaque fiche (une ligne du tableau correspond à une fiche).
Pour le moment, j'ai trouver ces lignes-ci pour enregistrer les pg excel:
Public Sub CommandButton1_Click() 'copie sauvegarde classeur
Dim nom As String
nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "" & nom
rep = MsgBox("Votre base de données est sauvegardée sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
End Sub
Mais je n'ai pas besoin de la date dans le nom du document il me faudrait une incrémentation (1,2,3...) et pas de bouton sinon faut que j'ouvre les 4000 fiches :S.
Qui elle sert juste a affecter la valeur au champ de la fiche à partir du tableau contenu dans le 2eme document.
Ce que je voudrait faire, c'est une boucle while qui répette ces tâches en incrémentant (pour passer à la ligne suivante du tableau) en enregistrant chaque fois la fiche avec le nom et le n°.
Je sais pas si j'ai été assez claire?
Je vous remercie de pretter attention à mon problème.
picpic62
Messages postés3Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention29 mars 2009 29 mars 2009 à 13:32
Merci pour vos réponses les gens! Ca fait plaisir de voir que sur le net il y a encore des gens qui rendent service sans rien attendre en retour.
Avec beaucoup d'aide d'un forumeur, j'ai trouvé la solution à mon problème... et j'y ai même ajouté une impression à chaque fiche. Voici le code pour ceux que ça interesse (à noter que si vous voulez l'utiliser il faut changer le nom de l'imprimante ;) )
Function numeroter_fichier(fichier As String, numero As Integer) As String
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
numeroter_fichier = FSO.GetParentFolderName(fichier) & "" & _
FSO.GetBaseName(fichier) & "_" & numero & "." & _
FSO.GetExtensionName(fichier)
End Function
Public Sub ZolieProc(wb_1 As Workbook)
Dim num As Integer
Dim nom As String
Dim t_wb As Workbook
Dim s_ws As Worksheet
Dim t_ws As Worksheet
Set s_ws = Workbooks("L1RACK_FC_EA.xlsx").Worksheets("L1RACK_FC_EA")
For num = 1 To 2
i = num + 1
nom = numeroter_fichier(wb_1.Path & "" & wb_1.Name, num)
wb_1.SaveCopyAs nom
Set t_wb = Workbooks.Open(nom)
Set t_ws = t_wb.Worksheets(1)
t_ws.Range("B8").Value = s_ws.Range("E" & i).Value
t_ws.Range("F8").Value = s_ws.Range("D" & i).Value
t_ws.Range("F10").Value = s_ws.Range("I" & i).Value
t_ws.Range("B15").Value = s_ws.Range("A" & i).Value
t_ws.Range("G15").Value = s_ws.Range("B" & i).Value
t_ws.Range("J15").Value = s_ws.Range("C" & i).Value
t_wb.Save
Application.ActivePrinter = "PDFCreator sur Ne00:"
ExecuteExcel4Macro _
"PRINT(1,,,1,,,,,,,,2,""PDFCreator sur Ne00:"",,TRUE,,FALSE)"
t_wb.Close
Next
End Sub
Public Sub CommandButton1_Click() 'copie sauvegarde classeur
ZolieProc ActiveWorkbook
End Sub