[Excel] Afficher un bouton sous condition : Résolu

Afficher un bouton sous condition : Résolu [Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 22-09-2014 à 19:47:52    

Bonjour à tous !
 
Je viens vous demander votre aide. Je suis nouveau sur le forum.  
 
J'ai créé un petit fichier excel avec un bouton permettant l'affichage d'une feuille cachée.  
 
J'aimerais que ce bouton ne s'affiche que si la valeur d'une cellule de la feuille (non cachée) dépasse une certaine valeur.
 
J'ai beau cherché... Je ne trouve pas...
 
J'espere que quelqu'un saura m'aider.
 
Merci d'avance


Message édité par b45t13n le 25-09-2014 à 18:26:46
Reply

Marsh Posté le 22-09-2014 à 19:47:52   

Reply

Marsh Posté le 22-09-2014 à 20:02:27    

 
            Regarder si  Visible  existe dans les propriétés de l'objet du bouton …
 

Reply

Marsh Posté le 22-09-2014 à 21:07:05    

Oui, il l'est et il y'a juste True ou False

Reply

Marsh Posté le 23-09-2014 à 14:22:56    

Il faut simple mettre un peu de code VBA sur l'événement "change" de la cellule concernée. En fait, pour être précis, l'événement change est sur le worksheet (onglet). Il faut donc vérifier que le Target (cellule, utiliser Target.Name il me semble) qui a déclenché l'événement "change" est la cellule qui doit provoquer le changement d'état du bouton. Si c'est la bonne cellule, récupérer sa valeur (Target.Value je crois) et en fonction, passer à "True" ou "False" la propriété "Visible" du bouton. ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 23-09-2014 à 19:15:57    

Je suis désolé mais je n'ai vraiment pas compris... Je suis débutant en VBA. Je vais détailler :  
- Le bouton sert à ouvrir une feuille cachée et à la selectionner :

Code :
  1. Private Sub Matériel_Click()
  2. Sheets("Simulation Matériel" ).Visible = True
  3. Sheets("Simulation Matériel" ).Select
  4. End Sub


 
- Le bouton ne doit s'afficher que si la cellule fusionnée M25:Q27 dépasse la valeur 280
 
Pourrais tu me dire exactement la démarche à suivre. Désolé je suis un débutant en VBA ...


Message édité par b45t13n le 25-09-2014 à 18:01:14
Reply

Marsh Posté le 24-09-2014 à 09:52:42    

Je viens de te l'expliquer en détail dans mon précédent post :o
Sur l'événement "change" de la sheet ou se trouve ta cellule, tu mets le code pour vérifier quelle cellule a déclenché l'événement et si c'est celle que tu veux, tu vérifies ensuite sa valeur. Si elle est > 280, tu mets à true la propriété visible du bouton, sinon, tu la mets à false.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 24-09-2014 à 19:02:37    

j'ai trouvé l'evennement change de la sheet, mais je ne sais pas quoi ecrire exactement...

Code :
  1. J'ai essayé comme ça mais ca ne marche pas :
  2. Private Sub Matériel_Click()
  3. Sheets("Simulation Matériel" ).Visible = True
  4. Sheets("Simulation Matériel" ).Select
  5. End Sub
  6. Private Sub Worksheet_Change(ByVal Target As Range)
  7. If Target.Value > 280 Then Exit Sub
  8. End Sub


 
 
Je precise que la cellule cible contient une formule
...


Message édité par b45t13n le 25-09-2014 à 18:01:47
Reply

Marsh Posté le 24-09-2014 à 21:30:42    

Je t'ai dit que déjà, fallait tester que la cellule ayant déclenché le "change" était bien celle que tu voulais. Car là, n'importe quel cellule dont tu vas modifier le contenu directement ou indirectement va déclencher le change.
 
Par ailleurs, pourquoi tu fais un exit après le test alors que tu veux afficher ou masquer le bouton; t'es pas très logique :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 25-09-2014 à 06:16:12    

Encore une fois je suis débutant. Je ne sais pas comment tester que la cellule est la bonne ni ce qu'il faut mettre à la place de exit... J'ai tapper ça en cherchant un peu

Reply

Marsh Posté le 25-09-2014 à 09:00:22    

 
           Merci d'utiliser l'icône dédiée pour baliser le code conformément aux règles du forum …
 
           Sinon être débutant n'empêche pas d'être logique !
           Pourquoi donc sortir de la procédure si n'importe quelle cellule modifiée est supérieure à 280 ?‼
 
           Utiliser la propriété Address (ne pas hésiter à consulter l'aide VBA intégrée !) pour vérifier l'adresse de la cellule modifiée …
 

Reply

Marsh Posté le 25-09-2014 à 09:00:22   

Reply

Marsh Posté le 25-09-2014 à 12:49:41    

Je ne sais pas comment entrer les formules... Je vais faire plus simple : Je souhaite que quand la cellule H29 affiche 1 le bouton soit visible et que quand elle affiche 0 le bouton ne le soit pas. Quelqu'un pourrait me donner le code pour cela ? Merci d'avance

Reply

Marsh Posté le 25-09-2014 à 12:58:40    

 
           Ce n'est plus la problématique d'origine !   Est-elle vraiment fixée définitivement cette fois-ci ?
 
           Et merci d'éditer le post contenant le code pour le baliser avec l'icône dédiée conformément aux règles de ce forum (à lire) …
  

Reply

Marsh Posté le 25-09-2014 à 13:23:35    

Cela dit, la solution à son pb ne diffère pas. Il a qu'à définir en plus 2 constates : l'une avec l'adresse de la cellule chargée de piloter l'affichage/masquage du bouton et l'autre pour définir la valeur à partir de laquelle le bouton doit s'afficher :/
 
b45t13n, on t'a donné la structure globale de l'algo, t'as plus qu'à trouver les instructions en VBA associées, ce qui se fait très facilement avec l'aide de VBA dans Office et via le web. Mais on ne te donnera pas le code tout fait. En revanche, tu peux poster ton code ici (en utilisant les balises "code" :o ) pour nous montrer ce que tu as fait (suite aux infos qu'on t'as données) et nous dire où tu coinces. Là, tu recevras de l'aide.
 
Mais le coup du "je suis débutant, faites-le moi", ça ne marchera pas :non:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 25-09-2014 à 16:06:30    

Jai simplifié en mettant une formule dans une autre cellule pour avoir un résultat binaire. Je vais essayer ce soir. Merci pour toutes ces information...

Reply

Marsh Posté le 25-09-2014 à 18:21:29    

Bon j'ai trouvé et ça marche, je ne sais pas par contre si c'est la solution la plus simple.

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Range("H29" ).Value = 1 Then
  3. Matériel.Visible = True
  4. Else
  5. Matériel.Visible = False
  6. End If
  7. End Sub

Reply

Marsh Posté le 25-09-2014 à 18:49:06    


           Evidemment t'as pas appliqué de que je t'ai indiqué, pourtant de niveau grand débutant avec l'aide VBA intégrée !
 

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Address = "$H$29" Then Matériel.Visible = Target.Value
  3. End Sub

Reply

Marsh Posté le 25-09-2014 à 19:08:01    

Dans ton code je ne vois pas à quel moment est pris en compte la valeur de H29 pour l'affichage ou non du bouton.


Message édité par b45t13n le 25-09-2014 à 19:11:23
Reply

Marsh Posté le 25-09-2014 à 22:23:06    

 
           Et l'as-tu testé au moins ?
 

Reply

Marsh Posté le 26-09-2014 à 06:53:10    

Oui, il ne marche pas

Reply

Marsh Posté le 26-09-2014 à 10:07:01    


           Alors ton code ne fonctionne pas plus vu que le mien reprend le même nom d'objet "Matériel" ‼
 
           Sinon cela fonctionne comme un charme de mon côté sur plusieurs ordinateurs avec différentes versions d'Excel
           pour une feuille au CodeName "Matériel" (comme dans ton code) qui disparait si en H29 il y a un zéro ou rien,
           principe d'un booléen en BASIC …
 

Reply

Marsh Posté le 26-09-2014 à 10:25:22    

Est-ce qu'en VBA, True vaut 1 ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 26-09-2014 à 13:44:49    

Code :
  1. If 1 Then
  2.     MsgBox "True = 1"
  3. Else
  4.     MsgBox "True != 1"
  5. End If


 
Oui.

Reply

Marsh Posté le 26-09-2014 à 15:19:15    

Au passage b45t13n, je te déconseille les noms de variables avec des accents. Même si le VB le permet, ça pourrait être une source à pb (bien que dans ton cas, ça n'en soit pas la cause).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 26-09-2014 à 15:28:26    

 
           

rufo a écrit :

Est-ce qu'en VBA, True vaut 1 ?


            En BASIC TRUE vaut -1, en VB généralement aussi mais avec des TriState peut renvoyer aussi 1
            mais en fin de compte un booléen est FALSE uniquement si la valeur est vide ou vaut zéro,
            et toute autre valeur correspond à TRUE !     Et c'est très simple à vérifier …
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed