cs_kouki69
Messages postés95Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention28 août 2015
-
28 juin 2007 à 08:36
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 2011
-
28 juin 2007 à 13:50
Bonjour,
Voilà, je fais des schémas sur excel et je souhaiterais masquer certaines formes selon des conditions.
Exemple:
Initialement, le schema est complet (2 cercles relié par une ligne). Les formes sont générées avec le générateur de forme de excel97
Je voudrais que pour une condition particulière (par ex cellule B1 = 2), le trait ("Trait 1")reliant les deux cercles soit masqué.
Je n'ai pas d'idée quelle commande utilisée
Est-ce possible ??
Merci de votre aide
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 28 juin 2007 à 12:07
Colle ce code dans la feuille concernée
1 - Clic droit sur l'onglet puis "afficher le code"
2 - Sélectionne "Worksheet" dans la liste en haut (à la place de "General")
3 - Colle le code
4 - Supprime les 2 lignes qui se sont affichées par défaut
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SelectionActuelle
' Conserve la cellule active pour repositionner la selection après exécution
SelectionActuelle = ActiveCell.Address
' Affiche systématiquement le trait afin de pouvoir le sélectionner
ActiveSheet.Shapes("Line 1").Visible = True
ActiveSheet.Shapes("Line 1").Select If Range("B2") 2 And ActiveSheet.Shapes("Line 1").Visible True Then
Selection.Visible = False
ElseIf Range("B2") <> 2 Then
Selection.Visible = True
End If
' Resélectionne la cellule active avant exécution
Range(SelectionActuelle).Select
End Sub
En fait, cette commande permet de ne pas remplir la forme et de ne pas mettre de bordure. Je préfèrerais plutôt une seule ligne qui permet de cacher la forme (Hide)
Des idées ?????
Merci
cs_kouki69
Messages postés95Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention28 août 2015 28 juin 2007 à 11:03
Effectivement, nos messages se sont croisés.
L'inconvénient c'est que cett eligne de commande semble supprimer complètement la forme. Ce que je souhaite, c'est pouvoir la réafficher si besoin (si la condition évolue), si t'as des idées ...
Merci
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 28 juin 2007 à 11:28
Elle n'est pas supprimée mais simplement masqué
Il suffit de :
If Range("B2") = 2 Then
ActiveSheet.Shapes("Line 1").Select
Selection.Visible = False
Else
Selection.Visible = True
End If
Tu met ce code dans la feuille au niveau
Private Sub Worksheet_Change(ByVal Target As Range)
cs_kouki69
Messages postés95Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention28 août 2015 28 juin 2007 à 11:46
J'avais essayé le else selection.visible = True mais ça buggait
Quand tu dis mettre ce code dans la feuille au niveau :
Private Sub Worksheet_Change(ByVal Target As Range)
Celà veut dire le mettre dans un module ? C'est ce que j'ai essayé mais aucune réaction ...
(Je comprends que "Private Sub Worksheet_Change(ByVal Target As Range)" permet d'activer le code dès la modification dans la feuille excel et évite donc d'éxécuter une macro via outils, macro, éxécuter ....)