Auto écriture dans un module
Bonjour,
Le programme permet l'auto écriture de "sub" dans un module en fonction des besoins. Cette étape fonctionne ainsi que les tests sur l'existence du module etc.
Cependant, suite à la génération du code qui est OK :
- et bien que l'utilisateur soit "de retour" sur la feuille de travail,
- et dans la bonne cellule de saisie,
La saisie de l'utilisateur s'écrit dans le module ce qui bien sur engendre un couac !
Voici le code utilisé (qui est une adaptation de l'un des tutos de Dev):
Code:
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
|
'*********************************************************
'TelNOM = Nom de la macro
'TelNUM = Indice specifique du CMD
'CodeACTION = Indice de la macro à déclancher
'"Sub " & TelNOM & "():Call FAIREY(" & TelNUM & ") :End Sub" = La SUB écrite automatiquement
'Nom_MODULE = Public Const du nom du module requis
'Worksheets(F_R) = La feuille de travail du classeur
'*********************************************************
Public Sub ECRIRE_DANS_MODULE(TelNom As String, TelNUM As Integer, CodeACTION As Integer)
Application.VBE.ActiveVBProject.VBComponents(Nom_MODULE).Activate
With Application.VBE.SelectedVBComponent
Select Case CodeACTION
Case Is = 0
Application.VBE.CodePanes(1).CodeModule.AddFromString "Private Sub " & TelNom & "():Call FAIREY(" & TelNUM & ") :End Sub"
Case Is = 1
Application.VBE.CodePanes(1).CodeModule.AddFromString "Private Sub " & TelNom & "():dim mont as C_MOOVE:set mont=new C_MOOVE:Call mont.M_M(" & TelNUM & ") :End Sub"
Case Is = 2
Application.VBE.CodePanes(1).CodeModule.AddFromString "Private Sub " & TelNom & "():dim det as C_MOOVE: set det = new C_MOOVE: Call det.M_S(" & TelNUM & ") :End Sub"
Case Is = 3
Application.VBE.CodePanes(1).CodeModule.AddFromString "Private Sub " & TelNom & "():dim desc as C_MOOVE:set desc = new C_MOOVE:Call desc.M_D(" & TelNUM & ") :End Sub"
Case Is = 4
Application.VBE.CodePanes(1).CodeModule.AddFromString "Private Sub " & TelNom & "():dim aj as C_MOOVE:set aj = new C_MOOVE:Call aj.M_A(" & TelNUM & ") :End Sub"
Case Else
End Select
End With
Application.ThisWorkbook.Worksheets(F_R).Cells(1, 1).Activate
End Sub |
Une dernière précision, la feuille est verrouillée sauf bien sur les cellules de saisies. Hors lorsque l'on fait la saisie il ne se passe rien ... car la saisie continue dans le module en instance sauf si l'on clique plusieurs fois sur la cellule !
J'aimerai donc trouver le moyen de clore l’accès au module avant de "revenir" à la feuille. Je ne sais si je suis compréhensible ? Merci par avance, bien cordialement.
Bonjour et merci pour la promptitude
Par contre je viens de tester la suppression de Activate mais la compilation deviens alors impossible.
Le msg est :
Attendu : Identificateur ou expression entre crochets
Les autres propositions automatiques suite au point ne me semblaient pas valables mais je vais quand même les explorer, je reste preneur d'une autre idée, encore merci.