2 votes

Alternative à SendKeys dans InputBox pour choisir des cellules avec moins de saisie utilisateur

J'utilise la méthode SendKeys, pour la convivialité, avec un InputBox, pour sélectionner plusieurs cellules à utiliser pour les calculs.

Je veux éviter que l'utilisateur doive maintenir la touche CTRL en cliquant sur chaque cellule ou en appuyant sur Shift-F8 pour sélectionner plusieurs cellules.

Je veux que l'InputBox s'affiche et que les cellules puissent être sélectionnées même si elles ne sont pas directement à côté les unes des autres, sans avoir à faire quoi que ce soit d'autre.

Voici un exemple de ce que j'ai.

Sub CalculateIt()
    Dim calcRange As Range
    On Error Resume Next
    SendKeys "+{F8}"
    Set calcRange = Application.InputBox("Sélectionnez les cellules que vous souhaitez utiliser.", Type:=8)
    If Err.Number = 424 Then Exit Sub

    Dim stuff As Double
    For Each calcCell in calcRange
        If IsNumeric(calcCell.Value) Then stuff = stuff + calcCell.Value
    Next calcCell

    MsgBox "La solution : " & Sqr(stuff)
End Sub

Je veux éviter d'utiliser la méthode SendKeys car j'ai lu beaucoup de choses à propos de sa difficulté d'utilisation et de sa fragilité, et le fait qu'elle peut causer des problèmes. J'ai rencontré des situations où cela ne fonctionnait pas et où je devais quand même maintenir CTRL ou faire Shift-F8.

0voto

pondersome Points 183

Possible solution... Ajoutez une case à cocher à la feuille de calcul, puis accédez à la fenêtre Microsoft Excel Objects | ThisWorkbook et entrez le code suivant. Si la case à cocher est cochée, alors toute formule que vous souhaitez exécuter le sera lorsque l'utilisateur clique sur chaque cellule.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim nbrCell As Double
If IsNumeric(ActiveCell.Value) Then nbrCell = ActiveCell.Value Else nbrCell = 0
If FeuilleActive.CheckBox1.Value = True Then FeuilleActive.Range("A1").Value = FeuilleActive.Range("A1").Value + nbrCell
End Sub

Vous pouvez également ajouter une deuxième case à cocher pour supprimer les cellules sélectionnées si vous craignez que l'utilisateur puisse accidentellement cliquer sur la mauvaise cellule et souhaite que cette valeur soit supprimée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X