Interpolation entre coordonnées
Bonjour,
Je poste cette question sur ce forum car je bloque et mon travail devient urgent à rendre.
Dans mon cas, j'ai un jeu de mesures en X Y Z pris environ tous les 2m. Afin de pouvoir effectuer des calculs, je dois interpoler toutes mes valeurs pour que j'obtienne les bons Y et Z tous les 2m exactement.
Le calcul de l'interpolation n'est pas mon problème (équation d'une droite en 2D).
Mon problème est de pouvoir, via un code VBA, sélectionner automatiquement le X inférieur le plus proche de 2m et supérieur le plus proche de 2m (je dois faire ça jusqu'à environ 300m). Ensuite, j'impose mes variables X1, X2, Y1 et Y2 correspondants aux valeurs trouvées afin de calculer le bon Y et le bon Z.
Voici le code que j'utilise :
Sub interpolation_PM2()
Dim a, i, j As Integer
Dim X1, X2, Y1, Y2 As Double
a = 41
For i = 6 To 176
For j = 5 To 175
If Sheets(1).Cells(a - 37, j) < Sheets(1).Cells(39, i) And Sheets(1).Cells(a - 37, i) > Sheets(1).Cells(39, i) Then
Sheets(1).Cells(a - 37, j) = X1
Sheets(1).Cells(a - 36, j) = Y1
Sheets(1).Cells(a - 37, j + 1) = X2
Sheets(1).Cells(a - 36, j + 1) = Y2
Sheets(1).Cells(a, i).Value = ((Y2 - Y1) / (X2 - X1)) * Sheets(1).Cells(39, i) + ((Y2 - ((Y2 - Y1) / (X2 - X1)) * X2))
End If
X1 = Empty
X2 = Empty
Y1 = Empty
Y2 = Empty
Next j
Next i
End Sub
La variable a = la ligne dans laquelle je dois insérer la nouvelle valeur
La variable i = la colonne dans laquelle je dois insérer la nouvelle valeur
La variable j = la plage de colonnes dans laquelle il faut chercher les X correspondants
Lorsque j'active la macro, le déboggeur me dit qu'il y a un problème dans mon if (en gras)... Je ne comprends pas vraiment pourquoi.
[EDIT] j'ai rajouté des s au cell. A présent, excel m'avertit d'un dépassement de capacité pour la ligne de la formule (en gras). Avez-vous une idée ?
Pour info, je travail en horizontal et non en colonnes.
Merci d'avance,
Simon
Bonjour,
Pour commencer Cell n'existe pas!...
Il faut utiliser Cells en lieu et place.
Cdlt.
Oui effectivement ! Erreur d'inattention... Et je ne suis pas une bête en vba non plus
J'ai édité mon post car un nouveau soucis set apparu.
Un grand merci pour cette réponse ultra rapide en tout cas !