Incrémentation via code VB

Bonjour

Je souhaiterai via 2 formes (flèches "+" ou "-" ), incrémenter une cellule (O1), qui est une valeur,

de +1 ou -1 à chaque fois que je cliquerai sur la flèche concernée.

Par contre il doit rester possible de modifier la cellule "O1", sans pour autant que cela occasionne un message d'erreur lié au code VB.

Merci de votre aide.

Cdl.

Bonjour Fred,

Je te propose ce fichier Excel :

8exo-fred56.xlsm (13.33 Ko)

Edit : j'ai fait une version améliorée ici : https://forum.excel-pratique.com/viewtopic.php?p=650094#p650094

dhany

Bonjour,

Tu crées tes deux formes que tu nommes respectivement "FlèchePlus" et "FlècheMoins", et tu leur affectes la macro suivante :

Sub IncrémenterO1()
    Dim n%
    On Error GoTo Fin
    Select Case Application.Caller
        Case "FlèchePlus": n = 1
        Case "FlècheMoins": n = -1
        Case Else: Exit Sub
    End Select
    With ActiveSheet.Range("O1")
        .Value = .Value + n
    End With
Fin:
End Sub

Cordialement.

Bonjour,

Voici une proposition : une macro Plus et une macro Moins à affecter sur les objets choisis

Sub Plus()

If IsNumeric(Range("O1")) Then

Range("O1") = Range("O1") + 1

Else

MsgBox "O1 contient une valeur non numérique"

Exit Sub

End If

End Sub

Sub Moins()

If IsNumeric(Range("O1")) Then

Range("O1") = Range("O1") - 1

Else

MsgBox "O1 contient une valeur non numérique"

Exit Sub

End If

@Fred

Mon code VBA précédent plantera si une valeur non numérique est saisie en O1 ; mais il y a un moyen très simple de l'éviter :

mettre une validation de données en O1 pour des nombres entiers compris entre -50 et +50 (par exemple).

Si tu connais déjà la validation de données, tu sais qu'il n'y a que les 2 bornes à saisir : pas tous les nombres !


Edit : j'ai fait une version améliorée ici (sans validation de données) : https://forum.excel-pratique.com/viewtopic.php?p=650094#p650094

(et qui ne plante pas si O1 n'est pas une valeur numérique ; le code VBA est très simple et très court)

dhany

Re,

Précision : le code fourni ne plantera pas, il incrémente s'il peut, sinon rien. Il n'incrémente pas si non lancé par bouton (par exemple par la boîte dialogue macro ou par une autre procédure). Et une seule macro pour les deux formes.

Cordialement.

@Fred

Si vraiment tu préfères éviter de mettre en place une validation de données, voici une nouvelle version de mon fichier Excel précédent qui marchera même si O1 ne contient pas de valeur numérique :

6exo-fred56.xlsm (13.46 Ko)

Le code VBA est très simple et très court :

Sub Plus()
  If IsNumeric([O1]) Then [O1] = [O1] + 1
End Sub

Sub Moins()
  If IsNumeric([O1]) Then [O1] = [O1] - 1
End Sub

donc si O1 n'est pas numérique : ça fait rien, tout simplement !

dhany

Rechercher des sujets similaires à "incrementation via code"