Copie automatique

Résolu
cs_bijnok Messages postés 16 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 avril 2008 - 7 avril 2008 à 17:38
cs_bijnok Messages postés 16 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 avril 2008 - 10 avril 2008 à 17:11
   Bonjour, je debute en VBExcel et je souhaite creer automatiquement de nouveaux classeurs dont les noms est contenu dans deux colonnes (id et nom) , et inserere le nom et l`id dans la nouvelle feuille ainsi qu`une structure predefinie.
J`ai reussi a creer une macro permettant de creer automatiquement tous mes nouveaux classeurs, voici le code:

Sub test()
    Dim newW As Workbook
    Application.ScreenUpdating = False
    For i = Sheets(1).Range("A50000").End(xlUp).Row To 1 Step -1
        fName = Sheets(1).Cells(i, 1).Value & " " & Sheets(1).Cells(i, 2).Value & ".xls"
        Set newW = Workbooks.Add
        newW.SaveAs Filename:=fName
        Workbooks(fName).Close
    Next
    Application.ScreenUpdating = TrueEnd Sub


puis creation d`un bouton:

Private Sub CommandButton1_Click()
test
End Sub

Maintenant j`aimerais que dans chque feuille apparraisse une structure predefinie identique dans tous les classeurs (en vert sur l`image) ainsi que l`id et le nom utilises (en gris sur l`image)... mais je ne vois pas comment inserer un copy-paste dans la boucle ci-dessus.

Merci d`avance

Bijnok 

5 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
7 avril 2008 à 17:59
Salut,

Bon ben deja, t'es pas dans le bon theme... ben si... donc le bon theme le voici : [infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA] /

Sub test()
    Dim newW As Workbook
    Application.ScreenUpdating = False
    For i = Sheets(1).Range("A50000").End(xlUp).Row To 1 Step -1
        fName = Sheets(1).Cells(i, 1).Value & " " & Sheets(1).Cells(i, 2).Value & ".xls"
        Set newW = Workbooks.Add
        newW.SaveAs Filename:=fName
        With Workbooks(fName)
            'ici on crée une nouvelle feuille par copie d'une feuille template d'un fichier template prealablement ouvert
            Workbooks("Template.xls").Worksheets("Template").Copy Before:= .Sheets(1)
            .Close
       End With
    Next
    Application.ScreenUpdating = True
End Sub

je n'ai pas testé ce bout de code

A+
3
cs_bijnok Messages postés 16 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 avril 2008
8 avril 2008 à 10:27
3
cs_bijnok Messages postés 16 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 avril 2008
8 avril 2008 à 10:45
Merci pour le code, c`est presque xce que je voudrais mais je souhaiterais ne pas a voir a confirmer la sauvegarde parce que je dois avoir quelquechose comme 300 classeurs a creer! De plus, j`aimerais que les cellules A2 et B2 contiennent respectivement l`id et le nom utilise comme filename.

Est-ce possible avec une formule de reference sur une feuille contenant les noms du type

`=(i,1)` pour la colonne A et `=(i,2)` pour la B ?

Encore merci !
3
cs_bijnok Messages postés 16 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 avril 2008
10 avril 2008 à 17:00
J`ai essaye ceci:

Sub test()
Dim newW As Workbook
Application.ScreenUpdating = False
'Application.DisplayAlerts = False
For i = Sheets(1).Range("A50000").End(xlUp).Row To 1 Step -1

Dim A2 As String
A2 = Sheets(1).Cells(i, 1).Value

Dim B2 As String
B2 = Sheets(1).Cells(i, 2).Value

FName = Sheets(1).Cells(i, 1).Value & " " & Sheets(1).Cells(i, 2).Value & ".xls"

Set newW = Workbooks.Add
newW.SaveAs Filename:=FName

With Workbooks(FName)
'ici on crée une nouvelle feuille par copie d'une feuille template d'un fichier template prealablement ouvert
Workbooks("structure.xls").Worksheets("timetable") .Copy Before:=.Sheets(1)
Sheets(1).Cells(2, 1).Value = A2
Sheets(1).Cells(i, 2).Value = B2
.Close
End With
Next

'Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

mais la boucle s`arrete apres la creation du premier classeur (toujours le meme probleme de nom de sauvegarde vide).
De plus la cellule B2 de la nouvelle feuille reste vide alors que la A2 contient l`Id que je souhaite.  Je ne compremd vraiment pas grand chose a VBA bien que je soit presque bon en C et Java...
Aussi, je ne fais que copier la valeur en A2, alors que je souhaiterais copier une formule du type "=............." afin de faire reference a la base de donnee; de cette facon chacune des feuilles sera mise a jour avec la base de donnees principale...
Enfin, le "display alerts" ne fait rien (je sais qu`il est en commentaire ici).

Merci pour votre aide, j`en ai grandement besoin. 
3

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

Posez votre question
cs_bijnok Messages postés 16 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 10 avril 2008
10 avril 2008 à 17:11
j`ai une faute, il faut remplacer Sheets(1).Cells(i, 2).Value = B2 par Sheets(1).Cells(2, 2).Value = B2
3
Rejoignez-nous