OVH Cloud OVH Cloud

VBA - transmettre un argument string incrémenté d'une macro

4 réponses
Avatar
twinley
Bonjour à tous

J'ai du soucis pour passer l'argument string.

Si j'utilise "Feuil49" c'est bon pour une feuille.

Comme je veux traiter plusieurs feuilles, je mets une boucle et je veux
faire évoluer le N° de feuille de 49 à 84.

Mais l'argument en CodeMod$ reste Feuil & n. Je n'arrive pas à le
transmettre en l'incrémentant.


Sub testkillsub()
Dim Classeur As Workbook
Dim Module As Object
Dim n As Integer
Dim Feuil As String

For n = 49 To 84
DelProc ThisWorkbook, "Feuil & n", "Worksheet_Change"
Next n
End Sub

Sub DelProc(Wbk As Workbook, CodeMod$, NomProc$)
Dim liDeb, NbLi
With Wbk.VBProject.VBComponents(CodeMod).CodeModule
liDeb = .ProcStartLine(NomProc, 0)
NbLi = .ProcCountLines(NomProc, 0)
.deleteLines liDeb, NbLi
End With
End Sub


Merci pour l'aide
--
à+twinley

4 réponses

Avatar
papou
Bonjour
A priori vite fait comme ça, je dirai que c'est normal :
Modifie ceci :
DelProc ThisWorkbook, "Feuil & n"
en :
DelProc ThisWorkbook, "Feuil" & n

Cordialement
Pascal

"twinley" a écrit dans le message news:
#mo#
Bonjour à tous

J'ai du soucis pour passer l'argument string.

Si j'utilise "Feuil49" c'est bon pour une feuille.

Comme je veux traiter plusieurs feuilles, je mets une boucle et je veux
faire évoluer le N° de feuille de 49 à 84.

Mais l'argument en CodeMod$ reste Feuil & n. Je n'arrive pas à le
transmettre en l'incrémentant.


Sub testkillsub()
Dim Classeur As Workbook
Dim Module As Object
Dim n As Integer
Dim Feuil As String

For n = 49 To 84
DelProc ThisWorkbook, "Feuil & n", "Worksheet_Change"
Next n
End Sub

Sub DelProc(Wbk As Workbook, CodeMod$, NomProc$)
Dim liDeb, NbLi
With Wbk.VBProject.VBComponents(CodeMod).CodeModule
liDeb = .ProcStartLine(NomProc, 0)
NbLi = .ProcCountLines(NomProc, 0)
.deleteLines liDeb, NbLi
End With
End Sub


Merci pour l'aide
--
à+twinley


Avatar
twinley
Bonjour papou,

C'est parfait.
Mais il me semblait avoir essayé la solution dès ma troisième modif et
cela n'a pas marché...ohlala.

Merci

à+twinley

papou wrote:
Bonjour
A priori vite fait comme ça, je dirai que c'est normal :
Modifie ceci :
DelProc ThisWorkbook, "Feuil & n"
en :
DelProc ThisWorkbook, "Feuil" & n

Cordialement
Pascal

"twinley" a écrit dans le message news:
#mo#

Bonjour à tous

J'ai du soucis pour passer l'argument string.

Si j'utilise "Feuil49" c'est bon pour une feuille.

Comme je veux traiter plusieurs feuilles, je mets une boucle et je veux
faire évoluer le N° de feuille de 49 à 84.

Mais l'argument en CodeMod$ reste Feuil & n. Je n'arrive pas à le
transmettre en l'incrémentant.


Sub testkillsub()
Dim Classeur As Workbook
Dim Module As Object
Dim n As Integer
Dim Feuil As String

For n = 49 To 84
DelProc ThisWorkbook, "Feuil & n", "Worksheet_Change"
Next n
End Sub

Sub DelProc(Wbk As Workbook, CodeMod$, NomProc$)
Dim liDeb, NbLi
With Wbk.VBProject.VBComponents(CodeMod).CodeModule
liDeb = .ProcStartLine(NomProc, 0)
NbLi = .ProcCountLines(NomProc, 0)
.deleteLines liDeb, NbLi
End With
End Sub


Merci pour l'aide
--
à+twinley







Avatar
Elliac
Bonjour,

As-tu pnsé à insérer tes nouvelles lignes à l'intérieur de la plage utilisée
précédemment. Sinon dans ton Vlookup il te faut redéfinir la plage utilisée.
As-tu un 0 en argument "Range_Lookup" ?

Camille

"twinley" wrote:

Bonjour à tous

J'ai du soucis pour passer l'argument string.

Si j'utilise "Feuil49" c'est bon pour une feuille.

Comme je veux traiter plusieurs feuilles, je mets une boucle et je veux
faire évoluer le N° de feuille de 49 à 84.

Mais l'argument en CodeMod$ reste Feuil & n. Je n'arrive pas à le
transmettre en l'incrémentant.


Sub testkillsub()
Dim Classeur As Workbook
Dim Module As Object
Dim n As Integer
Dim Feuil As String

For n = 49 To 84
DelProc ThisWorkbook, "Feuil & n", "Worksheet_Change"
Next n
End Sub

Sub DelProc(Wbk As Workbook, CodeMod$, NomProc$)
Dim liDeb, NbLi
With Wbk.VBProject.VBComponents(CodeMod).CodeModule
liDeb = .ProcStartLine(NomProc, 0)
NbLi = .ProcCountLines(NomProc, 0)
.deleteLines liDeb, NbLi
End With
End Sub


Merci pour l'aide
--
à+twinley



Avatar
twinley
Bonjour,

eh non, je ne savais même pas que cela existait...
je suppose que c'est pour le post suivant ? la souris a ripé !

à+twinley

Elliac wrote:
Bonjour,

As-tu pnsé à insérer tes nouvelles lignes à l'intérieur de la plage utilisée
précédemment. Sinon dans ton Vlookup il te faut redéfinir la plage utilisée.
As-tu un 0 en argument "Range_Lookup" ?

Camille

"twinley" wrote:


Bonjour à tous

J'ai du soucis pour passer l'argument string.

Si j'utilise "Feuil49" c'est bon pour une feuille.

Comme je veux traiter plusieurs feuilles, je mets une boucle et je veux
faire évoluer le N° de feuille de 49 à 84.

Mais l'argument en CodeMod$ reste Feuil & n. Je n'arrive pas à le
transmettre en l'incrémentant.


Sub testkillsub()
Dim Classeur As Workbook
Dim Module As Object
Dim n As Integer
Dim Feuil As String

For n = 49 To 84
DelProc ThisWorkbook, "Feuil & n", "Worksheet_Change"
Next n
End Sub

Sub DelProc(Wbk As Workbook, CodeMod$, NomProc$)
Dim liDeb, NbLi
With Wbk.VBProject.VBComponents(CodeMod).CodeModule
liDeb = .ProcStartLine(NomProc, 0)
NbLi = .ProcCountLines(NomProc, 0)
.deleteLines liDeb, NbLi
End With
End Sub


Merci pour l'aide
--
à+twinley