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.

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
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)
ce qui me donne dans ma macro générale:

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
et je récupère l’erreur énoncée en titre.

Si vous avez des idées, je suis très preneur !
Merci