Mettre mon macro dynamique
Résolu
amiro2017
Messages postés
193
Date d'inscription
Statut
Membre
Dernière intervention
-
amiro2017 Messages postés 193 Date d'inscription Statut Membre Dernière intervention -
amiro2017 Messages postés 193 Date d'inscription Statut Membre Dernière intervention -
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
- Tableau croisé dynamique - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Liste déroulante dynamique excel - Guide
- 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
193
Date d'inscription
Statut
Membre
Dernière intervention
1
mercciii beaucoupp cs_Le Pivert je veux le tester
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, tu veux le changer en fonction de quoi?