Macro en boucle de if, then else, elseif... [Résolu/Fermé]

Signaler
Messages postés
12
Date d'inscription
vendredi 20 juillet 2018
Statut
Membre
Dernière intervention
30 juillet 2018
-
Messages postés
12
Date d'inscription
vendredi 20 juillet 2018
Statut
Membre
Dernière intervention
30 juillet 2018
-
Bonjour le forum !

J'ai créé un menu déroulant (contrôle de formulaire) avec les catégories charges, courses, sorties et shopping, restaurant, gazole, autres.

Si vous ne l'avez pas compris je réalise un petit fichier de suivi de mes dépenses de chaque mois.

Le menu déroulant est associé à la cellule S8 et j'ai créé 6 macro (1 pour chaque catégories) qui fonctionnent (elles trient pour que ma plage de donnée fasse remonter les lignes concernées par la catégorie en question en fonction de la couleur etc).

Le problème c'est la macro qui prendrait les 6 en d'un coup. J'essaye de créer une macro qui dit que si S8 vaut 1 alors il faut exécuter la macro CHARGES sinon, si S8 vaut 2 alors il faut éxecuter la macro RESTAURANT et ainsi de suite...

Le problème c'est que je ne sais pas bien coder et là j'ai essayer plein de manières différentes et aucune ne marche, j'ai consulté pleins de sites qui m'ont permis de modifier mon code mais il y a toujours un soucis alors je ne sais pas si il a été le meilleur mais voici mon dernier essai:


Sub SELECTIONNER()

If Cells("S8") = "1" Then CHARGES
Else: If Cells("S8") = "2" Then RESTAURANT
Else: If Cells("S8") = "3" Then SORTIESETSHOPPING
Else: If Cells("S8") = "4" Then AUTRES
Else: If Cells("S8") = "5" Then GAZOLE
Else: If Cells("S8") = "6" Then COURSES
Else: Stop
End If
End Sub


Et voici le fichier complet:
https://www.cjoint.com/c/HGAmIz3kGqt


J'espère avoir été clair :)

2 réponses

Messages postés
9640
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 novembre 2020
1 980
Bonjour

Essaies comme ceci
Public Sub SELECTIONNER()
Select Case ActiveSheet.Range("S8").Value
  Case 1: CHARGES
  Case 2: RESTAURANT
  Case 3: SORTIESETSHOPPING
  Case 4: AUTRES
  Case 5: GAZOLE
  Case 6: COURSES
  Case Else: Stop
End Select
End Sub

Cdlmnt
Messages postés
12
Date d'inscription
vendredi 20 juillet 2018
Statut
Membre
Dernière intervention
30 juillet 2018

Merciiiiiiiiiiiii :D Je suis trop contente ! Mais je veux comprendre le langage pour progresser :

que veut dire:
select case activesheet.range("S8").value .
case 1 2 3 ...

?
Messages postés
9640
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 novembre 2020
1 980
Select Case permet de distinguer les différents cas selon la valeur de la variable qui suit (ici : activesheet.range("S8").value . )
Case 1 traite le cas où elle vaut 1
etc..
Case else traite les autres cas

Permet de simplifier les imbrications de if then elseif then ...

Cdlmnt
Messages postés
12
Date d'inscription
vendredi 20 juillet 2018
Statut
Membre
Dernière intervention
30 juillet 2018

Merci bcp :)
Messages postés
23681
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 novembre 2020
6 500
Bonjour,

pour comprendre tes erreurs, 2 dans :
If Cells("S8") = "1" Then CHARGES 


1) Cells n'accepte pas "S8" en paramètre.
C'est Cells(ligne, colonne). (et éventuellement Cells(Index) mais pas utile pour toi).

2) "1" représente la chaine de caractère "1"
S'il s'agit du nombre il faut mettre 1 sans les "".
Une feuille te fera une conversion si besoin, pas vba qui ne pardonne pas les approximations.

eric


Messages postés
12
Date d'inscription
vendredi 20 juillet 2018
Statut
Membre
Dernière intervention
30 juillet 2018

Merci beaucoup :)