Bonjour à tous,
Je suis étudiante en finance et donc malheureusement très peu à l'aise avec VBA. Mais je me dois de faire un programme sous excel alors j'ai essayé de programmer et en vain il ne fonctionne pas. Le but du programme est plus ou moins simple et part d'une base de données sur des catégories de voitures :
-dans un premier temps une macro doit générer automatiquement dans chaque feuille du classeur chaque catégorie de voiture sauf que à l'exécution de ma macro je reçois le message "erreur 1004 vba erreur définie par l'application ou par l'objet" >> Je n'ai pas vu où est l'erreur est -ce que l'un d'entre vous pourrait m'indiquer quoi modifier?
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 Private Sub creation() Dim objsheet As Worksheet Set objsheet = Worksheets.Add(after:=Worksheets(Worksheets.Count)) objsheet.Name = nom End Sub Private Sub ajoutcontenu() Dim n As Integer Dim m As Integer Dim p As Integer Dim objCell As Object m = 1 p = K Do While p < (K + 5) n = 1 Set objCell = Worksheets("Données").Cells(p, m) Do Until IsEmpty(objCell) And IsEmpty(objCell.Offset(p, m + 2)) Worksheets(nom).Cells(n, m).Value = objCell.Value m = m + 1 Set objCell = Worksheets("Données").Cells(p, m) Loop p = p + 1 m = m + 1 Loop End Sub Private Sub SetupFile() Dim objCell As Object Dim n As Integer n = 1 Set objCell = Worksheets("Données").Cells(n, 1) Do Until IsEmpty(objCell) And IsEmpty(objCell.Offset(1, 0)) creation Worksheets("Données").Cells((n + 2), 1).Value ajoutcontenu Worksheets("Données").Cells((n + 2), 1).Value, n n = n + 5 Set objCell = Worksheets("Données").Cells(n, 1) Loop End Sub Private Sub ouvrir() SetupFile End Sub
- par la suite j'ai réussi à générer un tableau qui à partir de la base de données reclassent les indices des catégories de voiture selon l'année en ligne et les mois en colonne (à l'origine les données sont sur la même ligne quelque soit le mois et l'année) mais...il me manque un petit élément à rajouter à ma boucle il faudrait qu'après les douze mois de l'année (en ligne) il y ait une moyenne de ses chiffres pour l'année en question et cela pour chaque année.
J'ai cru comprendre qu'il fallait faire une boucle imbriquée mais je ne sais vraiment pas comment m'y prendre. Auriez -vous une idée ?
Je vous ai donc joint la base de donnée où il y a les onglets de créer, et un word de ce à quoi les tableaux devrait ressembler à la fin !
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 Sub tableau1() Dim n, m As Integer n = 3 m = 8 année = 1 Cells(7, 3).Value = "Janvier" Cells(7, 4).Value = "Février" Cells(7, 5).Value = "Mars" Cells(7, 6).Value = "Avril" Cells(7, 7).Value = "Mai" Cells(7, 8).Value = "Juin" Cells(7, 9).Value = "Juillet" Cells(7, 10).Value = "Août" Cells(7, 11).Value = "Septembre" Cells(7, 12).Value = "Octobre" Cells(7, 13).Value = "Novembre" Cells(7, 14).Value = "Décembre" Do While Cells(3, n).Value <> "" mois = 1 Cells(m, 1).Value = Year(Cells(2, n).Value) Do While mois <= 12 Cells(m, mois + 2).Value = Cells(3, n).Value n = n + 1 mois = mois + 1 Loop m = m + 1 Loop End Sub
Je vous remercie mille fois pour votre aide et espère m'en sortir
Partager