Appel d'une macro suivant une référence dynamique

Bonjour,

Je souhaite appeler un macro suivant une referecne calculer suite à une formule.

Ma formule se trouve en feuille F1.

Ma macro lit la référence (cellule D2) puis va chercher dans un tableau structuré en feuille F2 cette référence.

Cette référence (colonne A) correspond à une macro dont le nom se trouve en colonne B.

J'aimerai que ma macro principale appelle la macro correspondante lorsqu'elle trouve la référence mais je bloque sur la fin de ma macro .

Pouvez vous m'aider ?

Je vous remercie

Option Explicit

Sub Worksheet_Change(ByVal Target As Range)

Dim Valeur As String, Plage As Range

If Not Intersect(Target, Me.Range("$A$2:$C$2")) Is Nothing And Target.Count = 1 Then

Valeur = Me.Range("D4")

With [P1.1].ListObject.DataBodyRange

Set Plage = .Find(Valeur)

If Not Plage Is Nothing Then 'Call Macro trouver en P1.1

End With

End If

8call-macro.xlsm (74.18 Ko)

Plutôt Application.Run

Sub test()
    Application.Run Range("A1").Value
End Sub

Sub bonjour()
    MsgBox "hello !"
End Sub

Sub coucou()
    MsgBox "salut !"
End Sub

Hello,

Je viens de tester ca mais ca ne fonctionne pas.

Option Explicit

Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As String, Plage As Range

    If Not Intersect(Target, Me.Range("$A$2:$C$2")) Is Nothing And Target.Count = 1 Then
        Valeur = Me.Range("D4")
        With [P1.1].ListObject.DataBodyRange
            Set Plage = .Find(Valeur)
             If Not Plage Is Nothing Then Application.Run Worksheets("P1.1").Range(.Cells(Plage.Row - .Row + 1, 2)).Value
        End With

    End If

    End Sub
6call-macro.xlsm (76.25 Ko)

L'erreur n'a rien à voir avec Application.run

  • Il peut y avoir confusion entre P1.1 la feuille et P1.1 le tableau !
  • Pourquoi Range("D4") ? c'est Range("D2")
  • OR / C
    OR / 4B
    OR / C
    ne sont pas des noms de macro
Option Explicit

Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As String, Plage As Range

    If Not Intersect(Target, Range("$A$2:$C$2")) Is Nothing And Target.Count = 1 Then
        Valeur = Range("D2").Value
        With Sheets("P1.1").ListObjects(1).DataBodyRange
            Set Plage = .Find(Valeur)
            If Not Plage Is Nothing Then Application.Run Replace(Plage.Offset(0, 1).Value, " / ", "")
        End With

    End If

End Sub
Rechercher des sujets similaires à "appel macro suivant reference dynamique"