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
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