Bonjour,
Je viens vers vous pour une erreur qui semble être assez courante chez les débutants en VBA mais qui semble aussi avoir plein de résolution possible.
Je travaille sur une macro pour configurer des switchs et mon but est d'optimiser le code. Une de mes feuilles regroupe toutes les commandes à lancer en fonction du type de structure (vlan etc ...)
La macro est assez longue et fonctionne parfaitement avec toutes les répétitions, elle appartient à un grand sub de plusieurs centaines de lignes et est utilisée plusieurs fois.
Afin d'optimiser, j'ai souhaiter créer un sub appelé génériquement en dehors de la très grande macro (je l'ai simplement appelée macro1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For i = 2 To 200 If Sheets("Config Elements").Cells(i, sourcecolonne).Value = "###findeconfig###" Then Exit For Sheets("Configurations").Cells(ligne, destcolonne).Value = Sheets("Config Elements").Cells(i, sourcecolonne).Value ligne = ligne + 1 Next
ce qui me donne dans ma macro générale:
et je récupère l’erreur énoncée en titre.
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 Sub megasub() Dim sourcecolonne Dim destcolonne ... plein de blabla .... '---------------------------------------------- ' Initie la colonne de destination de la configuration dans la feuille "Configurations" '---------------------------------------------- destcolonne = 1 ligne = 1 '---------------------------------------------- ' Configuration de base '---------------------------------------------- sourcecolonne = 1 macro1 sourcecolonne = 2 macro1 '---------------------------------------------- ' Configuration niveau 2 '---------------------------------------------- sourcecolonne = 3 macro1 .... encore plein de blabla end sub sub macro 1 () For i = 2 To 200 If Sheets("Config Elements").Cells(i, sourcecolonne).Value = "###findeconfig###" Then Exit For Sheets("Configurations").Cells(ligne, destcolonne).Value = Sheets("Config Elements").Cells(i, sourcecolonne).Value ligne = ligne + 1 Next end sub
Si vous avez des idées, je suis très preneur !
Merci
Partager