Excel VBA recalculer la sélection
Question
J'ai des feuilles de calcul Excel qui frappent la base de données assez durement (100+ requêtes par rapport à la table générale du grand livre ... yikes!). Rafraîchir la feuille sur laquelle je suis (Shift + F9) est utile dans certaines feuilles de calcul, mais je voulais un moyen de rafraîchir uniquement les cellules sélectionnées. Je suis venu avec le code suivant, placé dans l'objet Thisworkbook:
Dim currentSelection As String
Private Sub Workbook_Open()
Application.OnKey "+^{F9}", "ThisWorkbook.RecalculateSelection"
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
currentSelection = Target.Address
End Sub
Private Sub RecalculateSelection()
Range(currentSelection).Calculate
End Sub
Si possible, je voudrais rendre cela plus portable, comme le stocker dans un fichier XLA et le charger sous forme d'ajout Excel. Est-ce possible avec la méthode que j'utilise? Existe-t-il une meilleure façon d'y parvenir?
La solution
Vous devriez pouvoir utiliser ce qui suit:
Public Sub RecalculateSelection()
Dim rng As Range
Set rng = Application.Selection
rng.Calculate
End Sub
Vous devez placer une gestion des erreurs autour de la ligne «SET RNG», car l'utilisateur n'a peut-être pas sélectionné une plage (par exemple, il peut avoir sélectionné un graphique).
En utilisant l'objet d'application, vous n'avez pas besoin de capturer l'événement Workbook_SheetSelectionchange.
Autres conseils
Si vous utilisez la méthode de la réponse acceptée ci-dessus, vous devez d'abord vérifier que ...
If Not Selection Is Nothing Then
If TypeName(Application.Selection) = "Range" Then
Dim Rng As Range
Set Rng = Application.Selection
Rng.Calculate
End If
End If
Vous aimerez peut-être l'ajouter aux menus de contexte de la feuille et de la tôle. Le nom des deux barres de commande que vous devez faire est ... "cellule" et "pli"
Si vous souhaitez simplement recalculer les cellules actuellement sélectionnées, ignorer les cellules qui dépendent d'eux, vous pouvez utiliser mon addition Rangecalc, téléchargé à partir dehttp://www.decisionmodels.com/downloads.htm