Bonjour,
J'ai fait de mon mieux pour developper par moi meme mais je viens d'atteindre mes limites.
Je m'explique j'ai un premier fichier ou beaucoup de choses se passent sans encombre.
je souhaite pouvoir creer un classeur different pour en faire un rapport par mois avec une feuille par jour du mois.
le code suivant me permet de creer mon fichier :
ensuite je tente de reouvrir ce tableau en cas d'ajout de donnees au rapport et je test si le jour existe. sinon j'ajoute une feuille. Et la c'est le drame :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Sub createreport() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet 'On créer l'objet Excel Set xlApp = CreateObject("Excel.Application") 'On défini le nombre d'onglets (ici 5) xlApp.SheetsInNewWorkbook = 1 'On ajoute un classeur Set xlBook = xlApp.Workbooks.Add 'On donne un nom au classeur On Error Resume Next xlBook.SaveAs ThisWorkbook.Path & "\" & ("Report Manual request" & " " & Format(Now, "mmm-yyyy") & ".xls") Range("J4").Value = ThisWorkbook.Path & "\" & ("Report Manual request" & " " & Format(Now, "mmm-yyyy") & ".xls") On Error GoTo 0 'On rend le classeur visible xlApp.Visible = True 'On créer l'objet onglet dans le nouveau classeur créé Set xlSheet = xlBook.Worksheets(1) 'On affecte un nom aux l'onglets xlSheet.Name = Format(Now, "dd") 'on copie les donnees 'dataexport() 'On ferme l'application xlApp.Quit End Sub
ca plante a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 Sub addtoreport() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim dataholderwb As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim dataholderws As Excel.Worksheet Set dataholderwb = ThisWorkbook Set dataholderws = Sheets("b.U fill up") Debug.Print dataholderwb.FullName 'Debug.Print dataholderws.FullName If Range("J4").Value <> "" Then Set X1book = Workbooks.Open(Range("J4").Value) Debug.Print X1book.FullName If CheckSheet(Format(Now, "dd")) Then 'sheet already exist Set xlSheet = X1book.Worksheets(Sheets.Count).Activate Debug.Print X1book.FullName Debug.Print X1sheet.FullName 'selection de la feuille 'ajouter enregistrements Else 'sheet doesn't exist X1book.Sheets.Add After:=Sheets(ThisWorkbook.Sheets.Count) Set xlSheet = Sheets(ThisWorkbook.Sheets.Count) xlSheet.Name = Format(Now, "dd") Debug.Print X1book.FullName Debug.Print X1sheet.FullName End If 'copier les donnees Else MsgBox "No existing report" End If End Sub Function CheckSheet(ByVal sSheetName As String) As Boolean Dim oSheet As Excel.Worksheet Dim bReturn As Boolean For Each oSheet In ActiveWorkbook.Sheets If oSheet.Name = sSheetName Then bReturn = True Exit For End If Next oSheet CheckSheet = bReturn End Functionsi ma feuille n'existe pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part X1book.Sheets.Add After:=Sheets(ThisWorkbook.Sheets.Count)
ou a :si ma feuille existe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set xlSheet = X1book.Worksheets(Sheets.Count).Activate
help please
Partager