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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top