Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1396 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2238570
b45t13n
Posté le 22-09-2014 à 19:47:52  profilanswer
 

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
mood
Publicité
Posté le 22-09-2014 à 19:47:52  profilanswer
 

n°2238572
Marc L
Posté le 22-09-2014 à 20:02:27  profilanswer
 

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

n°2238580
b45t13n
Posté le 22-09-2014 à 21:07:05  profilanswer
 

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

n°2238621
rufo
Pas me confondre avec Lycos!
Posté le 23-09-2014 à 14:22:56  profilanswer
 

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
n°2238650
b45t13n
Posté le 23-09-2014 à 19:15:57  profilanswer
 

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
n°2238690
rufo
Pas me confondre avec Lycos!
Posté le 24-09-2014 à 09:52:42  profilanswer
 

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
n°2238761
b45t13n
Posté le 24-09-2014 à 19:02:37  profilanswer
 

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
n°2238777
rufo
Pas me confondre avec Lycos!
Posté le 24-09-2014 à 21:30:42  profilanswer
 

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
n°2238805
b45t13n
Posté le 25-09-2014 à 06:16:12  profilanswer
 

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

n°2238815
Marc L
Posté le 25-09-2014 à 09:00:22  profilanswer
 

 
           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 …
 

mood
Publicité
Posté le 25-09-2014 à 09:00:22  profilanswer
 

n°2238837
b45t13n
Posté le 25-09-2014 à 12:49:41  profilanswer
 

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

n°2238839
Marc L
Posté le 25-09-2014 à 12:58:40  profilanswer
 

 
           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) …
  

n°2238842
rufo
Pas me confondre avec Lycos!
Posté le 25-09-2014 à 13:23:35  profilanswer
 

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
n°2238877
b45t13n
Posté le 25-09-2014 à 16:06:30  profilanswer
 

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...

n°2238900
b45t13n
Posté le 25-09-2014 à 18:21:29  profilanswer
 

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

n°2238905
Marc L
Posté le 25-09-2014 à 18:49:06  profilanswer
 


           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

n°2238908
b45t13n
Posté le 25-09-2014 à 19:08:01  profilanswer
 

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
n°2238916
Marc L
Posté le 25-09-2014 à 22:23:06  profilanswer
 

 
           Et l'as-tu testé au moins ?
 

n°2238936
b45t13n
Posté le 26-09-2014 à 06:53:10  profilanswer
 

Oui, il ne marche pas

n°2238947
Marc L
Posté le 26-09-2014 à 10:07:01  profilanswer
 


           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 …
 

n°2238951
rufo
Pas me confondre avec Lycos!
Posté le 26-09-2014 à 10:25:22  profilanswer
 

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
n°2238976
MaybeEijOr​Not
but someone at least
Posté le 26-09-2014 à 13:44:49  profilanswer
 

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


 
Oui.

n°2238994
rufo
Pas me confondre avec Lycos!
Posté le 26-09-2014 à 15:19:15  profilanswer
 

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
n°2238999
Marc L
Posté le 26-09-2014 à 15:28:26  profilanswer
 

 
           

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 …
 

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Comment modifier la fonction d'un boutonCharger une image ou fichier dans excel via macro
Excel : Résumé / Liste déroulanteSoucis bouton "précedent" du navigateur et ancre de lien
un bouton de commandeProblème Macro excel 2007
Afficher la ligne d'une table après avoir choisi son ID dans une listeimprimer plusieurs tickets base excel
Retirer bouton wordpress[RESOLU] [VBA] - EXCEL 2010 - Optimisation de code
Plus de sujets relatifs à : [Excel] Afficher un bouton sous condition : Résolu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR