oracle7
XLDnaute Nouveau
[Résolu] ma fonction retourne #VALEUR! lors de la suppression d'une ligne
Bonjour à tous,
Voici mon problème :
Contexte
Dans chaque cellule de la plage A1:A100 j'ai une formule personnelle écrite en VBA du type "=MaFonction (Bx)".
Dans la plage B1:B100, je saisi une valeur numérique X qui sert de donnée d'entrée à "MaFonction".
En entête du tableau j'ai deux boutons. Un pour insérer une ligne n'importe où dans la plage A1:B100. L'autre pour supprimer une ligne quelconque dans cette même plage.
Voici le code de ces 2 boutons :
Bouton "Insérer ligne"
Bouton "Supprimer Ligne"
Mon Problème :
Lorsque je supprime une ligne, TOUTES les cellules contenant "MaFonction" perdent le résultat généré par "MaFonction" et affichent "#VALEUR!".
Pour mémoire, lorsque j'insére une ligne via le bouton "Insérer ligne", tout est OK, je ne perd pas l'affichage du résultat de calcul pour chaque ligne.
Quelqu'un peut-il me dire comment corriger ce problème.
D'avance MERCI.
Cordialement
oracle7
Bonjour à tous,
Voici mon problème :
Contexte
Dans chaque cellule de la plage A1:A100 j'ai une formule personnelle écrite en VBA du type "=MaFonction (Bx)".
Dans la plage B1:B100, je saisi une valeur numérique X qui sert de donnée d'entrée à "MaFonction".
En entête du tableau j'ai deux boutons. Un pour insérer une ligne n'importe où dans la plage A1:B100. L'autre pour supprimer une ligne quelconque dans cette même plage.
Voici le code de ces 2 boutons :
Bouton "Insérer ligne"
Code:
Private Sub CommandButton1_Click()
Dim iNoLigne As Integer
Application.ScreenUpdating = False
iNoLigne = ActiveCell.Row ' On récupère le N° de la ligne courante
With Range("A" & iNoLigne & ":C" & iNoLigne)
.Resize(1).EntireRow.Insert ' On insert une ligne vide
' On recopie les formats et formules de la ligne précédente
.EntireRow.Copy .Offset(-1).Resize(1).EntireRow
On Error Resume Next ' Au cas où il n'y ait pas de constantes
' On efface les valeurs constantes préentes dans la ligne
.Offset(-1).Resize(1).EntireRow.SpecialCells(xlConstants).ClearContents
End With
Application.ScreenUpdating = True
ActiveCell.Select
End Sub
Bouton "Supprimer Ligne"
Code:
Private Sub CommandButton2_Click()
Dim iNoLigne As Integer
Application.ScreenUpdating = False
iNoLigne = ActiveCell.Row ' On récupère le N° de la ligne courante
With Range("A" & iNoLigne & ":C" & iNoLigne)
' On supprime la ligne courante
.Resize(1).EntireRow.Delete
End With
Application.ScreenUpdating = True
ActiveCell.Select
End Sub
Mon Problème :
Lorsque je supprime une ligne, TOUTES les cellules contenant "MaFonction" perdent le résultat généré par "MaFonction" et affichent "#VALEUR!".
Pour mémoire, lorsque j'insére une ligne via le bouton "Insérer ligne", tout est OK, je ne perd pas l'affichage du résultat de calcul pour chaque ligne.
Quelqu'un peut-il me dire comment corriger ce problème.
D'avance MERCI.
Cordialement
oracle7
Dernière édition: