Fonction modifier cellule

Bonjour à tous,

Je suis en train de créer un fichier excel avec des macros pour faire un petit gestionnaire de comptabilité. Je bloque cependant sur un point :

Je souhaite créer une fonction OPERATION qui selon un numéro saisie dans une cellule renverra le nom de l'opération (1 pour une recette, 2 pour une dépense, etc...). Jusque là aucun problème mais je bloque sur une option supplémentaire que je voudrais ajouter. Je veux que si le numéro choisi est erroné (n'appartient pas à la liste prédéfinie) les instructions suivantes soit exécutées :

- Message Box pour dire que le numéro est erroné

- Bouton recommencé qui ouvre une input box permettant de sélectionner une valeur correcte

- Remplace le numéro erroné par la valeur saisie

La message box fonctionne je n'arrive juste pas à remplacer la valeur de départ... Mon code ainsi qu'une capture du rendu sont juste en dessous.

Merci d'avance !

Killian

Function OPERATION(NUM)

    Dim Num2 As String
    Dim NumColumn As Integer
    NumColumn = NUM.Column
    Dim NumRow As Integer
    NumRow = NUM.Row

    If NUM = "" Then
        OPERATION = ""
    ElseIf NUM = 1 Then
        OPERATION = "Recette"
    ElseIf NUM = 2 Then
        OPERATION = "Dépense"
    ElseIf NUM = 3 Then
        OPERATION = "OD"
    ElseIf NUM = 4 Then
        OPERATION = "A Nouveau"
    Else
        If MsgBox("Le numéro d'opération est inconnu.", 5 + 48) = 4 Then
            Num2 = InputBox("Saisir le numéro d'opération :" & Chr(10) & "1 : Recette" & Chr(10) & "2 : Dépense" & Chr(10) & "3 : OD" & Chr(10) & "4 : A Nouveau", "Changement opération")
            Cells(NumRow, NumColumn) = Num2
        ElseIf MsgBox("Le numéro d'opération est inconnu.", 5 + 48) = 2 Then
            NUM = ""
        End If
    End If

End Function
annotation 2020 08 11 195746

Bonjour Killian,

Que transmettez vous comme valeur à votre fonction, que vaut "NUM" ?

Sinon, je verrais plutôt quelque chose comme

Function OPERATION(Rng As Range)
  Dim Num2 As String
  Dim NumColumn As Integer
  NumColumn = Rng.Column
  Dim NumRow As Integer
  NumRow = Rng.Row
  ' Selon la valeur de la cellule
  Select Case Rng.Value
  Case " "
    OPERATION = ""
  Case 1
    OPERATION = "Recette"
  Case 2
    OPERATION = "Dépense"
  Case 3
    OPERATION = "OD"
  Case 4
    OPERATION = "A Nouveau"
  Case Else
      If MsgBox("Le numéro d'opération est inconnu.", 5 + 48) = 4 Then
          Num2 = InputBox("Saisir le numéro d'opération :" & Chr(10) & "1 : Recette" & Chr(10) & "2 : Dépense" & Chr(10) & "3 : OD" & Chr(10) & "4 : A Nouveau", "Changement opération")
          Cells(NumRow, NumColumn) = Num2
      ElseIf MsgBox("Le numéro d'opération est inconnu.", 5 + 48) = 2 Then
          Rng.ClearContents
      End If
  End Select
End Function

@+

Bonjour ! Merci pour votre réponse je vais essayer ça ;)

La fonction est OPERATION(NUM) où num correspond à la cellule sélectionné (celle située à gauche)

Tout se fait donc avec la valeur de la cellule sélectionné et je cherche donc à la modifier si la valeur n'est pas valide

Rechercher des sujets similaires à "fonction modifier"