Bonjour,
Je suis étudiant ingénieur actuellement en stage et je débute en vba.
Je travaille sur un clavier anglais d’où l'absence d'accents.
Dans le cadre de mon projet, je souhaite affecter une plage a un attribut "place" d'une classe "Operative" que j'ai créée.
Puis, plus loin:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Type Operative name As String place As Range numberOfCertificates As Integer End Type
Comme indique dans la partie du code en rouge ci-dessus, je voudrais que la plage commence deux cases en-dessous de la dernière case non vide de la colonne D puis se déroule sur 4 colonnes et un nombre de ligne égal au nombre de certificats + 2.
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 Sub addAnOperative() Dim Op As Operative Op.name = InputBox("Operative Name:", "Add an operative") Op.numberOfCertificates = 0 Dim n As Integer n = Op.numberOfCertificates + 2 Set Op.place = Range(Range("D1").End(xlDown), Range("D1").End(xlDown).Range("D" & n)) Op.place.Interior.ColorIndex = 19 Op.place.Borders.LineStyle = xlContinuous Op.place.Range("A1") = Op.name 'Op.place.Range("B1") = "Certificate" 'Op.place.Range("C1") = "Course Date" 'Op.place.Range("D1") = "Expiry Date" End Sub
Au moment de l’exécution, vba renvoie le message suivant."run time error 1004 application defined or object defined error"
J'ai essaye beaucoup de choses, passer par des Range intermédiaires locaux pour découper le codes, utiliser des offsets, j'ai vérifie que les objets manipules étaient bien des Range, bref je bloque depuis hier sur ce problème et je ne trouve pas de solution.
J'imagine que la réponse a ce problème est évidente, quelqu'un a-t-il un idée ?
Merci pour votre aide
Partager