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 -
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 :)
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:
- Macro if then
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
2 réponses
Bonjour
Essaies comme ceci
Cdlmnt
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
Bonjour,
pour comprendre tes erreurs, 2 dans :
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
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
que veut dire:
select case activesheet.range("S8").value .
case 1 2 3 ...
?
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