Private Sub - Exécuter des actions suivant condition

Bonjour,

J'aimerai arriver à faire une private sub() sur une des feuilles de mon fichier Excel me permettant d'exécuter différentes actions en fonction de la valeur d'une cellule (Allant de 1 à 3).

Si A1 = 1 -> Action 1
Si A1 = 2 -> Action 2
Si A1 = 3 -> Action 3
Si A1 = Valeur différente de 1,2,3 -> Action 4

J'ai essayé plusieurs petites choses comme ci dessous... Mais je n'y arrive pas...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("A1").Value = 1

Je vous remercie par avance ^^

Cordialement.

Bonsoir,

Une proposition à peaufiner

Cordialement.

27olivier-tp.xlsm (15.36 Ko)

Merci beaucoup :)

Bonne fin de journée à vous.

Je viens de l'appliquer et je rencontre un petit soucis...

Cela fonctionne lorsque c'est une valeur présente dans la cellule A1, mais dans mon cas j'ai une formule qui change la valeur de la cellule A1 suivant la situation et dans cette situation... Cela ne marche pas.

Y a t'il quelque chose à changer dans le code?

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
        testSelectCase
    End If
End Sub
Sub testSelectCase()
'Source : https://www.excelformation.fr/tests-logiques-select-case-vba-excel-complete.html

Dim a As Integer
    a = Range("A1").Value

    Select Case a
        Case 1
            Range("B1") = "Choix 1"
        Case 2
            Range("B1") = "Choix 2"
        Case 3
            Range("B1") = "Choix 3"
        Case Else
            Range("B1") = "Choix 4"
       End Select
End Sub

Bonjour à tous,

Un essai ...

Si A1 ne contient pas de valeur numérique > la macro se termine ...

Sub testSelectCase()
'Source : https://www.excelformation.fr/tests-logiques-select-case-vba-excel-complete.html

Dim a As Integer

   If IsNumeric(Range("A1").Value) And Range("A1").Value > 0 Then
      a = Range("A1").Value
      Select Case a
      Case 1
         Range("B1") = "Choix 1"
      Case 2
         Range("B1") = "Choix 2"
      Case 3
         Range("B1") = "Choix 3"
      Case Else
         Range("B1") = "Choix 4"
      End Select
   End If
End Sub

ric

re,

re,

Sans fichier, difficile de te répondre.

Quelles dont les valeurs que peut prendre la cellule A1 ?

Suivant les valeurs, ce sont les cases qu'ils faut modifier. Pour plus de compréhension regarde le lien indiqué en source de la macro.

Cordialement.

https://www.excelformation.fr/tests-logiques-select-case-vba-excel-complete.html

J'ai essayé la méthode de Zebulon et celle de Ric mais cela ne fonctionne pas.

Pour que cela soit plus clair je vous met un fichier en pièce jointe.

20olivier-tp.xlsm (19.54 Ko)

Sur la feuille 1 :
A1 et une liste déroulante affichant des chiffres de 1 à 5 et le code marche.

Sur la feuille 2 :

A1 est une fonction aléatoire entre borne (De 1 à 5) pour simuler ma fonction en appuyant sur F9.
Et le code ne marche pas.

J’espère que cela vous aidera.
Je vous remercie encore de prendre de votre temps pour m'aider ^^"

Bonjour à tous,

Un essai ...

ric

17olivier-tp.xlsm (19.30 Ko)

Quelle est la formule qui va alimenter la cellule A1 ?

Malheureusement Ric cela ne marche pas :-/

En ce qui concerne la formule de ma cellule Zebulon :

=SIERREUR(INDEX(B15:AF100;AM2-14;30);0)

J'ai l'impression que quelque soit la formule qui alimente la cellule A1 le code ne fonctionne pas :-/
Mais il marche si on y inscrit une valeur fixe.

Je vous remercie pour votre aide :-)

Je vais clôturer le sujet et peut être poser une autre question.

Bonne soirée à vous.

Pour info on vient de me dire :

Et la procédure worksheet_change ne fonctionne pas sur le résultat d'une formule. Il faudrait worksheet_calculate plutôt pour ce cas.

Private Sub Worksheet_Calculate()

If Range("A8") = 1 Then
Range("B8") = "Choix 1"
End If

End Sub

Ça fonctionne enfin :-)

Rechercher des sujets similaires à "private sub executer actions suivant condition"