Problème de mémoire boucle if dans un système de bouton en cascade
Bonjour à tous,
Je suis en train de travailler sur un fichier excel qui permet d'accéder à différentes pages avec différents paramètrages grâce à des boutons (explication) :
Sur la première page nous avons plusieurs boutons :
Bouton "Afficher Données" (nous emmène sur un page avec 3 boutons) ---> équipe A / équipe B / équipe C
Bouton "renseigner des données" (nous emmène sur la même page avec 3 boutons) --> équipe A / équipe B / équipe C
le but est que selon le bouton cliqué en premier (afficher ou renseigner les données) ces boutons secondaires (équipe A / équipe B / équipe C) nous emmène vers des feuilles différentes.
Pour cela j'ai créer la fonction suivante (qui est affectée à tous les boutons des 2 pages) :
Sub bouton()
Dim afficher As Integer
Dim renseigner As Integer
If Application.Caller = "afficher_donnees" Then '--> emmène vers écran intermédiaire de choix d'équipe
afficher= 1
renseigner= 0
Sheets("Choix équipe").Select
End If
If Application.Caller = "renseigner_donnees" Then '--> emmène vers écran intermédiaire de choix d'équipe
afficher=0
renseigner= 1
Sheets("Choix équipe").Select
End If
If afficher= 1 And Application.Caller = "equipeA" Then
Sheets("données personnalisées").Select
End If
If renseigner= 1 And Application.Caller = "equipeA" Then
Sheets("renseigner données personnalisées").Select
End If
End SubEdit modération : code mis entre balise </> , merci de penser à l'avenir à utiliser le bouton </> pour mettre le code.
Mon idée est de garder en mémoire une valeur pour pouvoir savoir quel est le premier bouton appuyé. Le problème que je rencontre et que la valeur de ce bouton ne reste pas, comme si elle était pas stockée. j'ai essayé de mettre des msgbox le long du code pour voir quand la valeur se "perdait". Il semble qu'elle reste jusqu'à ce qu'on reclique sur un bouton. Je ne comprends pas d'où vient le problème car pour moi la valeur est stockée même si la boucle if est finie et qu'on ne repasse pas dedans. Ce qui a pour conséquence que lorsque j'arrive sur la deuxième page je ne remplis pas les conditions du if (appui bouton + valeur renseigner/afficher =1) et donc mon bouton ne fonctionne pas.
Merci beaucoup d'avance pour vos réponses, je suis un grand débutant sur excel donc c'est possible que je passe à côté d'un truc évident mais je ne le vois pas !
Je ne peux pas joindre mon fichier pour des soucis de confidentialité (c'est pour mon travail), merci d'avance.
Bonjour,
le soucis est que vous déclarez les variable dans la Sub, ce qui fait qu'elles sont initialiser à chaque lancement de la Sub.
Si vous voulez que Afficher et Renseigner gardent leur valeur alors il faut les Dimensionner en dehors de la sub :
Dim afficher As Integer
Dim renseigner As Integer
Sub bouton()
If Application.Caller = "afficher_donnees" Then '--> emmène vers écran intermédiaire de choix d'équipe
afficher= 1
renseigner= 0
Sheets("Choix équipe").Select
End If
If Application.Caller = "renseigner_donnees" Then '--> emmène vers écran intermédiaire de choix d'équipe
afficher=0
renseigner= 1
Sheets("Choix équipe").Select
End If
If afficher= 1 And Application.Caller = "equipeA" Then
Sheets("données personnalisées").Select
End If
If renseigner= 1 And Application.Caller = "equipeA" Then
Sheets("renseigner données personnalisées").Select
End If
End SubIl faudrait faire un tour sur les cours VBA du site et regarder du côté "Portée des variables"
@ bientôt
LouReeD
Merci beaucoup pour ta réponse rapide, c'était ça ! j'ai corrigé sur mon programme et tout fonctionne comme prévu. Merci pour les conseils des cours, je vais aller y faire un tour !
Encore merci et bonne soirée,
Bonsoir,
merci de votre retour et remerciement !
@ bientôt
LouReeD