Mettre mon macro dynamique

Résolu
amiro2017 Messages postés 207 Statut Membre -  
amiro2017 Messages postés 207 Statut Membre -
Bonjour le forum,

j'arrive à enregistrer un macro pour utiliser son code par la suite mais le problème c'est que ce code ne peut être dynamique : en effet , je suis entrain de tracer la courbe de taux d'intérêt par cubic spline qui est déjà prédéfinie dans mon Excel, cette fonction nécessite chaque fois une plage de données qui n'est pas fixe et qui doit être insérées par l'utilisateur . Comment faire car cela ne me fonctionne pas:

voici le code:

Sub spline()
Dim DerniereLigne As Integer, i As Integer
ThisWorkbook.Sheets("feuil1").Activate
DerniereLigne = Range("B" & Rows.Count).End(xlUp).Row
For i = 17 To DerniereLigne
'je veux chaque fois changer la plage R17C4:R19C4 et R17C5:R19C5
Range("C" & i).FormulaR1C1 = "=Cubic_Spline(R17C4:R19C4,R17C5:R19C5,RC[-1])"

Next i

End Sub


je vous remercie d'avance infiniment

2 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    voici un code un peu redondant, car il faut sélectionner 2 plages. Si l'utilisateur se trompe, il risque d'y avoir un bug!

    Option Explicit
    Dim chaine As String
    Dim chaine2 As String
    Dim chaine3 As String
    Dim nom As String
    Dim nom2 As String
    Private Sub CommandButton1_Click()
      test '1ère plage
     test_2 '2ème plage
    chaine3 = "Cubic_Spline(" & chaine & "," & chaine2 & ",RC[-1])"
    MsgBox chaine3
    'Cubic_Spline(R17C4:R19C4,R17C5:R19C5,RC[-1])"
    End Sub
    '1ère plage
    Sub test()
    Dim pSource As Range, pDestination As Range
    On Error Resume Next        'évite les erreurs si plage incorrecte choisie
    Application.DisplayAlerts = False   'évite les alertes si plage non valide
    Set pSource = Application.InputBox("Sélectionner les données sources", , , , , , , 8)
    nom = pSource.AddressLocal
    Break_String  'split découpe la chaine en fonction des $
    Application.DisplayAlerts = True
    On Error GoTo 0
    End Sub
     '2ème plage
     Sub test_2()
    Dim pSource As Range, pDestination As Range
    On Error Resume Next        'évite les erreurs si plage incorrecte choisie
    Application.DisplayAlerts = False   'évite les alertes si plage non valide
    Set pSource = Application.InputBox("Sélectionner les données sources", , , , , , , 8)
    nom2 = pSource.AddressLocal
    Break_String_2  'split découpe la chaine en fonction des $
    Application.DisplayAlerts = True
    On Error GoTo 0
    End Sub
    'split découpe la chaine en fonction des $ 1ère plage
    Sub Break_String()
    Dim WrdArray() As String
    Dim text_string As String
    text_string = nom
    WrdArray() = Split(text_string, "$")
    WrdArray(2) = Replace(WrdArray(2), ":", "")
    chaine = "R" & WrdArray(2) & "C" & AlphaColToNum(WrdArray(1)) & ":R" & WrdArray(4) & "C" & AlphaColToNum(WrdArray(3))
    MsgBox chaine
    End Sub
    'split découpe la chaine en fonction des $ 2ème plage
    Sub Break_String_2()
    Dim WrdArray() As String
    Dim text_string As String
    text_string = nom2
    WrdArray() = Split(text_string, "$")
    WrdArray(2) = Replace(WrdArray(2), ":", "")
    chaine2 = "R" & WrdArray(2) & "C" & AlphaColToNum(WrdArray(1)) & ":R" & WrdArray(4) & "C" & AlphaColToNum(WrdArray(3))
    MsgBox chaine2
    End Sub
    'converti Lettre colonne en chiffre
    Function AlphaColToNum(Col As String) As Long
        AlphaColToNum = Range(Col & 1).Column
    End Function
    

    1
    1. amiro2017 Messages postés 207 Statut Membre 1
       
      mercciii beaucoupp cs_Le Pivert je veux le tester
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonsoir, tu veux le changer en fonction de quoi?
    0
    1. amiro2017 Messages postés 207 Statut Membre 1
       
      je vous remercie yg_be pour votre intérêt
      je veux changer les entrées de la fonction cubique spline :
      chaque fois les entrées de Cubic_Spline changent c'est à dire chaque fois je séléctionne une plage différente

      Cubic_Spline(R17C4:R19C4,R17C5:R19C5,RC[-1])"
      0