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 : 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
 
'*********************************************************
'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.