Excel VBA: feuille de calcule non mise à jour

Fermé
aligatorbh Messages postés 4 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010 - 28 janv. 2010 à 15:21
aligatorbh Messages postés 4 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010 - 29 janv. 2010 à 06:54
Bonjour à tous,

Mon probleme n'est pas résolut par la commande calculate (F9) ou dans le code vba Range("A1").calculate...

Excel est un programme super mais je bute sur une de ces limites (ou la mienne :)).. je m'explique.

J'ai un classeur dans lequel j'ai des feuilles cachées de référence nommées A, B, C et D. Ces feuilles sont préremplies et +/- complexe en formulation et on chacune dans leurs sheets un code VBA et un modules associé.

Dans ma feuille principale je choisis 5 type feuilles selon les références . Lors de la selection, la feuille correspondante et copiée, renommée puis affichée dans le classeur.
Les feuilles créées peuvent etre changées si on modifie la selection.

La disposition des onglets des feuilles créées sont automatiquement arrangés selon l'ordre de la selection.

Je me suis aperçu que excel ne mettait plus à jour les formules des feuilles. Ceci au bout d'un certain nombre de copie de sheet suivi d'un changement de position d'onglet. Ce nombre dépends de la "lourdeur" du classeur.
Il faut que je rentre dans chaque cellule puis appuis sur entrer pour mettre a jour seulement la cellule correspondante.

Le test peut etre fait simplement avec la procédure ci-dessous :
Créez un classeur avec 4 feuilles nommées Sheet1 à Sheet4. Dans la feuille 2 en A1 créez une formule lisant la valeur dans la cellule A1 de la feuille 1 (ex. =Sheet1!A1). Entréez la valeur 1 dans la cellule A1 de la feuille 1.
Insérer le code vba ci-dessous dans la feuille 1.
Créez un buton dans la feuille 2 qui va démarrer le code Sub test().

Lorsque le pg est lancé, il copie la feuille 4 puis supprime la copie et change la position de l'onglet 3 en 2eme position. Le code controle que la formule de la feuille 2 correspond bien à la valeur en feuille 1. Si elle ne correspond pas le nombre de copie/supp effetué et afficher. Et on peut voir que la valeur de la feuille 2 n'est pas mise à jour! Plus le classeur sera chargé avec des feuilles plus ce nombre chute (je suis arrivé à 2..).

Désolé pour les nombreuse fautes d'orthographe et autre mais j'espère avoir une réponse rapide car sinon j'ai plus d'1 semaine de boulot qui partira à la poubelle.

Sub test() 'A mettre dans Sheet1
loopE = 0
For x = 1 To 255 'Le nombre de copie lors de l'ouverture du classeur est limité à 255 en théorie
Worksheets("Sheet4").Visible = 1
On Error GoTo errorGest1
Sheets("Sheet4").Copy After:=Sheets(4)
On Error GoTo 0
Worksheets("Sheet4").Visible = 0
Application.DisplayAlerts = False
Sheets("Sheet4 (2)").Delete
Application.DisplayAlerts = True
Sheets(3).Move Sheets(2)
If Range("A1").Value = 1 Then
oldB = Worksheets("Sheet2").Range("A1")
Range("A1") = 2
If oldB = Worksheets("Sheet2").Range("A1") Then errorP = 1 Else errorP = 0
Else
oldB = Worksheets("Sheet2").Range("A1")
Range("A1") = 1
If oldB = Worksheets("Sheet2").Range("A1") Then errorP = 1 Else errorP = 0
End If
If errorP = 1 Then
loopE = x
x = 255
End If
Next x

Worksheets("Sheet2").Select

If loopE <> 0 Then MsgBox loopE

Exit Sub
errorGest1:
Worksheets("Sheet4").Visible = 0
MsgBox "Error copy limit " & x

End Sub
A voir également:

1 réponse

aligatorbh Messages postés 4 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010
29 janv. 2010 à 06:54
Personne n'a d'idée?
0