Bonjour,
Je débute le VBA pour mener à bout un projet de calcul d'investissement sur Excel.
Je souhaite principalement réaliser des opérations de copier-coller par plages de cellules sur plusieurs onglets.
Ces copier-coller sont soumis également à conditions (généralement que les données comprises dans des plages de cellules ne soient pas égales à 0).
Voici tout d'abord mon code en entier :
Code vb : 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 Sub Investment() Dim i As Integer, j As Integer, m As Integer, n As Integer, p As Integer m = 16 n = 40 p = 2 Worksheets("OD").Range("D16:AB25").Value = 0 Worksheets("OD").Range("D40:AB49").Value = 0 For q = 4 To Sheets.Count - 1 Worksheets("OD").Range("D144:AB144").Copy Worksheets(q).Range("D71:AB71").Paste Next For j = 2016 To 2040 For i = 4 To Sheets.Count - 1 If Worksheets("OD").Range("D" & m & ":AB" & m).Value <> 0 And Worksheets("OD").Range("D" & n & ":AB" & n).Value <> 0 Then m = m + 1 n = n + 1 p = p + 1 Else Worksheets(i).Activate Worksheets(i).Range("C7").Value = j If Worksheets(i).Range("D76").Value > 0 Then Worksheets(i).Range("D43:AB43").Copy Worksheets("OD").Paste Destination:=Worksheets("OD").Range("D" & m & ":AB" & m) Worksheets(i).Range("D43:AB43").Copy Worksheets("OD").Paste Destination:=Worksheets("OD").Range("D" & n & ":AB" & n) Worksheets(InvYear).Range("B" & p).Value = j Else End If m = m + 1 n = n + 1 p = p + 1 End If Next Next End Sub
Plusieurs problèmes se posent face à mon inexpérience :
- Une incompatibilité de type sur le bout de code :
Pourtant les cellules sont bien au format nombre sur Excel. Je pense que le problème peut venir du fait que c'est une plage de cellule.
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Worksheets("OD").Range("D" & m & ":AB" & m).Value <> 0 And Worksheets("OD").Range("D" & n & ":AB" & n).Value <> 0
- "Propriété ou méthode non gérée par cet objet" pour :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part Worksheets(q).Range("D144:AB144").Paste
- Erreur d'execution que je comprends pas encore :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part Worksheets("OD").Paste Destination:=Worksheets("OD").Range("D" & m & ":AB" & m)Je souhaite ici coller les valeurs copiées dans l'onglet "OD" dans les plages de cellules D16:AB16 (car ici n=16) et D40:AB40 (car ici n=40).
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part Worksheets("OD").Paste Destination:=Worksheets("OD").Range("D" & n & ":AB" & n)
Je joins mon fichier en valeurs à ce message, même s'il est assez vaste.
Je précise que je suis débutant (je commence à peine le VBA, même si j'ai des bases dans quelques autres langages).
Pour l'idée générale de mon code VBA dans mon fichier excel.
Je veux tout d'abord que les cellules des plages D16:AB25 et D40:AB49 de l'onglet "OD" soient égales à 0.
Puis je veux copier la plage de cellules de l'onglet "OD" D144:AB144 et la coller sur les cellules D71:AB71 de tous les onglets Invest01 jusqu'à Invest10.
Pour le reste c'est un peu plus compliqué, mais l'idée est la même, toujours des copier-coller de plages de cellules. La boucle for sur i est là pour réaliser ces copier-coller sur les différents onglets, mais j'ai l'impression que ca ne marchera pas comme cela.
Pourriez-vous m'aider s'il vous plait?
Merci d'avance
Partager