[VBA] Modification du code VBA de code VBA

Bonsoir,

Je sais qu'il y a beaucoup plus simple (notamment en utilisant une cellule fixe dans le tableau, modifiable par VBA), mais, savez-vous s'il est possible de modifier du code VBA à l'aide d'un autre code VBA.

Par exemple, si j'ai un code simple :

Private Sub CommandButton2_Click()
Cells(9, 8).Value = Cells(6, 6).Value * (50 / 100) * (11.5 / 100)
End Sub

Puis-je agir sur les valeurs 50 / 100 ou 11.5 / 100

Je peux, par exemple, faire apparaître un UserForm, proposant de modifier certaines valeurs fixes qui s'appliquent à de nombreuses cellules dans le tableau. Si j'inscrit 22 dans le premier champ et 17 dans le second j'obtiendrais :

Private Sub CommandButton2_Click()
Cells(9, 8).Value = Cells(6, 6).Value * (22 / 100) * (17 / 100)
End Sub

Et le bouton en question produirait donc un calcul différent.

Bonne soirée !

Slt,

à tester

Sub ChangeLineInSubs()
Dim myBook As Workbook
Dim i
Dim j

For Each myBook In Application.Workbooks
For i = 1 To myBook.VBProject.VBComponents.Count
For j = 1 To myBook.VBProject.VBComponents(i).CodeModule.CountOfLines
If myBook.VBProject.VBComponents(i).CodeModule.Lines(j, 1) = "Cells(9, 8).Value = Cells(6, 6).Value * (50 / 100) * (11.5 / 100)" Then
myBook.VBProject.VBComponents(i).CodeModule.DeleteLines j
myBook.VBProject.VBComponents(i).CodeModule.InsertLines j, "Cells(9, 8).Value = Cells(6, 6).Value * (22 / 100) * (17 / 100)"

End If
Next j
Next i
Next myBook
End Sub

Bonjour à tous,

Si j'ai bien compris, il n'y aurait pas besoin d'aller modifier le code à l'aide d'un code. Il s'agirait plutôt de paramétrer une instruction en fonction de valeurs saisies dans des champs.

si ces champs sont les textbox TextBox1 et TextBox2 (par exemple) dans un UserForm:

Private Sub CommandButton2_Click()
Cells(9, 8).Value = Cells(6, 6).Value * (TextBox1.Value  /  100)  *  (TextBox2.Value / 100)
End Sub

Ces textbox retournant un string, il serait peut-être nécessaire de convertir ces string en numérique à l'aide de fonction de conversion(CInt,CDbl,....). A voir

A+

Bonjour à tous,

Une proposition via inputbox...

Private Sub CommandButton2_Click()
  Dim a As Integer, b As Integer
      a = InputBox("Valeur 1?", "Valeur 1")
      b = InputBox("Valeur 2?", "Valeur 2")
   Cells(9, 8).Value = Cells(6, 6).Value * (a / 100) * (b / 100)
End Sub
21classeur1.xlsm (18.10 Ko)

Cordialement,

Bonjour,

Attention, ce genre de manœuvre n'est pas anodine !

Voici un code qui remplace les valeurs :

Private Sub CommandButton1_Click()

    Dim mModule As Object
    Dim Ligne As String
    Dim Changer As Boolean
    Dim I As Integer

    For Each mModule In ActiveWorkbook.VBProject.VBComponents

        'évite le module de la Form
        If mModule.Name <> Me.Name Then

            'boucle sur les lignes de code
            For I = 1 To mModule.CodeModule.CountOfLines

                Ligne = mModule.CodeModule.Lines(I, 1)

                If InStr(Ligne, TextBox1.Text) <> 0 Then

                    Ligne = Replace(Ligne, TextBox1.Text, TextBox3.Text)
                    mModule.CodeModule.ReplaceLine I, Ligne
                    Changer = True

                End If

                Ligne = mModule.CodeModule.Lines(I, 1)

                If InStr(Ligne, TextBox2.Text) <> 0 Then

                    Ligne = Replace(Ligne, TextBox2.Text, TextBox4.Text)
                    mModule.CodeModule.ReplaceLine I, Ligne
                    Changer = True

                End If

            Next I

        End If

    Next mModule

    If Changer = True Then MsgBox "Au moins un des deux remplacements a été effectué !"

End Sub

Dans le TextBox1, la première des valeurs à remplacer, dans le TextBox2, la seconde valeur à remplacer, dans le TextBox3, la valeur de remplacement de la première valeur et dans le TextBox4, la valeur de remplacement de la seconde valeur. Pour plus de facilité, voici un classeur exemple :

Merci pour vos réponses ; en effet ce genre d'opération n'est pas courant.

Il y a beaucoup d'informations à modifier ; je vais tester deux méthodes.

Celle que vous proposez et la méthode qui consiste à créer une feuille Excel protégée, où toutes les données pourront être modifiées via les champs de l'UserForm.

Merci beaucoup pour votre aide !

Bonne journée.

Rechercher des sujets similaires à "vba modification code"