Interpolation linéaire : problème If - End If

Bonjour à tous,

Dans une de mes macros VBA, je souhaite faire une interpolation linéaire (mes séries sont en colonnes) quand la cellule de mon tableau est vide. Pour cela, j'utilise cette "triple" boucle :

 For Each cellule In tableinit
                If cellule = "" Then Do

                                                'On sélectionne les cellules remplies situées au-dessus et en-desous de la cellule vide
                                               cellulesup = cellule.End(xlUp)
                                               celluleinf = cellule.End(xlDown)

                                               'on fait une interpolation linéaire à condition que la case supérieure ne soit pas un en-tête. Dans ce cas, on le fixe à la valeur de la cellule inférieure (série constante sur la période).

                                               If Not IsNumeric(cellulesup.Value) Then cellulesup.Value = celluleinf.Value

                                               cellule.Value = (celluleinf.Value - cellulesup.Value) / (celluleinf.Row - cellulesup.Row) * (cellule.Row - cellulesup.Row) + cellulesup.Value

                                     Loop
                End If

Next cellule

Sauf qu'Excel m'indique :

Erreur de compilation : End If sans bloc If.

Quelqu'un aurait une idée du problème (j'ai déjà essayé de supprimer le End If, mais cela ne change rien).

Merci de votre aide

Bonjour,

Je me demande s'il ne te manque pas plutôt un End if. Tu as 2 if et 1 End if.

A essayer peut être?.

Cordialement

Merci de ton aide psdi.

En fait, j'ai trouvé le problème en bidouillant : il faut tout simplement enlever la boucle Do...Loop et mettre les consignes à la ligne avant le End If tout simplement.

Bonjour,

Pour t'éclairer un peu plus.

If cellule = "" Then Do

Si tu écris qcq chose après le Then tu es sur IF sur 1 ligne : If ... then ... else ...., et on ne met pas de EndIf.

Là tu dois être sur un if à plusieurs ligne, donc rien après le Then :

If ... Then

Do

...

Loop

End If

De plus je ne vois pas de condition de sortie de ton Do Loop, tu vas boucler indéfiniment.

eric

Merci Eriiic,

Je pensais que Do ... Loop servait uniquement à "grouper" des lignes de codes. Très explications m'ont éclairé.

Bonne journée

Rechercher des sujets similaires à "interpolation lineaire probleme end"