Macro en boucle de if, then else, elseif...

Résolu
AudreyBEAUMARD Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
AudreyBEAUMARD Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
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 :)
A voir également:

2 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
0
AudreyBEAUMARD Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
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 ...

?
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
0
AudreyBEAUMARD Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Merci bcp :)
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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


0
AudreyBEAUMARD Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup :)
0