Bonjour,
J'ai un soucis avec une procédure et malgré mes recherches, je n'ai pas trouvé de sujet traitant mon problème.
Je précise que je suis grand débutant en VBA et codage macro donc vous voudrez bien excuser mes éventuelles maladresses...
Le contexte : j'ai réalisé une macro pour automatiser le traitement des factures fournisseurs dans l'entreprise où je travaille en vue de les préparer pour les injecter via access dans notre logiciel de gestion commerciale. La macro marche, pas de problème, ce qui m'a incité à vouloir l'enregistrer en xlam pour qu'elle soit disponible en permanence. A un moment, il est prévu de laisser la possibilité à l'utilisateur de corriger "localement" les données. J'ai prévu la création d'un CommandButton par vba sur la feuille active du classeur actif sur lequel cliquer après ces ajustements, et une écriture automatique du code ad hoc dans le codemodule de la feuille active.
Quand j'utilise la macro via le complément xla, le bouton et le code ne se créent pas, comme si le code ne reconnaissait pas le Feuil1 du classeur actif.
Pourriez-vous m'aider, s'il vous plaît ?
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
41
42
43 'Correction prix si Gescom Sub CorrGes() Dim Msg$, Title$, Response% Msg = "Voulez-vous corriger les Prix de référence et les Remises ?" Title = "Vérification des données" Response = MsgBox(Msg, 52, Title) If Response = vbYes Then Call CodConGesBut (X) Dim Obj As OLEObject ' Création bouton "ConGesBut" Set Obj = ActiveSheet.OLEObjects.Add("Forms.CommandButton.1") With Obj .Name = "ConGesBut" .Left = 879.75 .Top = 20.25 .Width = 140.25 .Height = 36.75 .Visible = True .Enabled = True .Object.Caption = "CONTINUER" .Object.ForeColor = &HFFFFFF .Object.BackColor = &HC0& .BackStyle = 1 .Placement = 3 .Object.Shadow = True .TakeFocusOnClick = True End With Response = MsgBox("Effectuez les corrections puis cliquez sur CONTINUER", 64, "") End If End Sub Sub CodConGesBut() Dim zl% With ActiveWorkbook.VBProject.VBComponents("Feuil1").CodeModule zl = .CountOfLines If Not ActiveWorkbook.VBProject.VBComponents("Feuil1"). _ CodeModule.Lines(zl - 3, 1) Like "*ConG*" Then .InsertLines zl + 1, "Private Sub ConGesBut_Click()" .InsertLines zl + 2, "ConGes = True" .InsertLines zl + 3, "Call Formatage_Access" .InsertLines zl + 4, "End Sub" End If End With End Sub
Partager