Excel, fonction personnalisée & actualisation
bla
-
Skro -
Skro -
Bonjour,
J'ai créé une fonction sur excel, la voici :
Function LookAtLine(feuille, line, x, y)
LookAtLine = Sheets(feuille).Cells(line + y, x)
End Function
assez simple en effet,
La fonction fonctionne comme un charme à l'exception de la partie actualisation.
Si la valeur contenue dans la cellule cible change, la fonction ne s'en rend pas compte et ne modifie pas sa réponse.
pesser sur F9 ne change absolument rien.
sauvgarder et rouvrir le fichier excel non-plus.
je dois donc sélectionner chaque cellules, peser sur F2 et "enter".
comme j'ai des miliers de cellules utilisant cette fonction, c'est assez chiant si vous permettez l'expression.
est-ce que quelqu'un connais une solution pour mon problème ?
J'ai créé une fonction sur excel, la voici :
Function LookAtLine(feuille, line, x, y)
LookAtLine = Sheets(feuille).Cells(line + y, x)
End Function
assez simple en effet,
La fonction fonctionne comme un charme à l'exception de la partie actualisation.
Si la valeur contenue dans la cellule cible change, la fonction ne s'en rend pas compte et ne modifie pas sa réponse.
pesser sur F9 ne change absolument rien.
sauvgarder et rouvrir le fichier excel non-plus.
je dois donc sélectionner chaque cellules, peser sur F2 et "enter".
comme j'ai des miliers de cellules utilisant cette fonction, c'est assez chiant si vous permettez l'expression.
est-ce que quelqu'un connais une solution pour mon problème ?
8 réponses
-
Bah, j'ai trouvé en surfant un peu plus.
il s'agit simplement d'insérer ces 3 lignes de codes au dessus de la fonction dans son module visual basic :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
J'espère que ca va aider quelqu'un d'autre.
Bonne journée -
Cette syntax semble avoir réglée le problème :
Sub Command1_Click() ' depuis un bouton exp...
LookAtLine
End Sub
Function LookAtLine(feuille, line, x, y)
Application.Volatile
Application.Volatile
LookAtLine = Sheets(feuille).Cells(line + y, x)
Application.Volatile
Calculate
End Function
...maintenant le script s'actualise automatiquement. -
heeheheh
Quand l'approche logique ne donne aucun résultat, l'approche illogique est tout ce qu'il reste.
Cela-dit, tu as surement raison, une seule "Application.Volatile" devrait suffire.
(Dans l'hypothèse où cette fonction agit effectivement sur quelque chose) -
Salut le forum
Tu aurais pu faire aussi
Function LookAtLine(feuille, line, x, y) Application.Volatile LookAtLine = Sheets(feuille).Cells(line + y, x) End Function
Mytå -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
N'oublie pas la sub commande d'actualisation
Sub Command1_Click()
LookAtLine
End Sub
je pense que c'est la seule chose qui affecte vraiment l'actualisation.
mais je pourrais me tromper. -
Re le forum
Pas besoin si tu écris ta fonction directement dans une cellule
=LookAtLine(feuille, line, x, y)
Tu devrais aussi t'habituer à déclarer tes variables
Function LookAtLine(feuille As String, line As Integer, x As Byte, y As Byte) As String Application.Volatile True LookAtLine = Sheets(feuille).Cells(line + y, x) End Function
Mytå
Merci de donner suite à votre question, nous ne sommes pas des robots...
Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)] -
-
Je n'y comprends rien... J'ai le même problème mais pour ce type de formule :
Function feuille_1(adresse As String)
Application.Volatile True
n = ActiveSheet.Index
feuille_1 = ThisWorkbook.Worksheets(n - 1).Range(adresse)
End Function
Toujours pas de mise à jour...