XL 2016 Besoin d'une formule pour incrémenter une colonne

Simon271982

XLDnaute Nouveau
Bonjour à tous,

Je recherche une fonction pour remplir la case O de mon fichier, je suis pas un expert en algorithme, j'aurais qu'un seul fichier se serait simple mais j'ai une vingtaine de fichier comme celui ci.
J'ai rempli la formule manuellement ça me permet de remplir une partie des cases à chaque fois mais pas la totalité de la colonne. Est ce qu'un âme charitable veut bien m'aider à réaliser une formule permettant de remplir cette colonne

Très cordialement
un utilisateur ponctuel d'excel
 

Pièces jointes

  • interpolation.xlsx
    33.6 KB · Affichages: 25

Dranreb

XLDnaute Barbatruc
Ma formule était seulement adaptée à un modèle de valeurs X constitué de nombres entiers qui se suivent. Si vous en avez besoin pour d'autres valeurs ça se complique parce qu'il faut remplacer tous les ENT($D5) par des EQUIV($D5;$A$4:$A$726). MOD($D5;1) ne va plus non plus: il faut prendre la différence entre les deux A successifs, celui trouvés avec EQUIV et le suivant. Plutôt qu'une telle formule à rallonge je préfèrerais m'écrire une fonction personnalisée.
 

Dranreb

XLDnaute Barbatruc
Dans un module standard :
VB:
Option Explicit

Function IntpoLinTbXY(ByVal X As Double, ByVal RgXY As Range) As Double
Dim L As Long, TXY()
L = WorksheetFunction.Match(X, RgXY.Columns(1))
TXY = RgXY(L, 1).Resize(2, 2).Value
IntpoLinTbXY = IntpoLin(X, TXY(1, 1), TXY(1, 2), TXY(2, 1), TXY(2, 2))
End Function

Function IntpoLin(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double) As Double
IntpoLin = Y1 + (Y2 - Y1) * (X - X1) / (X2 - X1)
End Function
En E3, à propager sur le nombre de lignes voulu :
Code:
=IntpoLinTbXY($D3;$A$3:$B$726)
 
Dernière édition:

Simon271982

XLDnaute Nouveau
Dans un module standard :
VB:
Option Explicit

Function IntpoLinTbXY(ByVal X As Double, ByVal RgXY As Range) As Double
Dim L As Long, TXY()
L = WorksheetFunction.Match(X, RgXY.Columns(1))
TXY = RgXY(L, 1).Resize(2, 2).Value
IntpoLinTbXY = IntpoLin(X, TXY(1, 1), TXY(1, 2), TXY(2, 1), TXY(2, 2))
End Function

Function IntpoLin(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double) As Double
IntpoLin = Y1 + (Y2 - Y1) * (X - X1) / (X2 - X1)
End Function
En E3, à propager sur le nombre de lignes voulu :
Code:
=IntpoLinTbXY($D3;$A$3:$B$726)




Nickel la fonction ça marche pour les deux colonnes
Merci encore
 

Discussions similaires

Statistiques des forums

Discussions
312 106
Messages
2 085 351
Membres
102 871
dernier inscrit
Maïmanko