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"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 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
Mon Problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 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
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
Partager