Mettre mon macro dynamique
Résolu
amiro2017
Messages postés
207
Statut
Membre
-
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:
je vous remercie d'avance infiniment
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
A voir également:
- Mettre mon macro dynamique
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
2 réponses
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!
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
amiro2017
Messages postés
207
Statut
Membre
1
mercciii beaucoupp cs_Le Pivert je veux le tester
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonsoir, tu veux le changer en fonction de quoi?