Macro montrer/masquer objet sous condition texte

Bonjour,

Je souhaite mettre en place un fichier pour localiser des personnes sur un plan.

Le fichier en PJ est juste un test, le véritable fichier contiendra plus d’une centaine de personne.

Voici ce que j’aimerais faire et je pense que j’ai besoin de VBA pour ça.

Dans l’onglet 1 « Chercher une personne », on sélectionne dans la liste déroulante un nom case B1.

Ensuite sur l’onglet 2 « Plan » je souhaite que l’encadré Fanny s’affiche uniquement si j’ai sélectionné Fanny dans la liste déroulante de l’onglet 1. Si non je souhaite qu’il soit masqué. Et de même pour les autres prénoms de la liste.

Est-ce que quelqu’un serait m’aider ?

Merci d’avance

Lou

41test.xlsx (165.25 Ko)

Salut,

Il faudrait renommer tes cadres, ici j'ai fais au plus simple, le cadre de jacques s'appelle... JACQUES et de fanny... FANNY.

Pour que la macro fonctionne il te faut donc renommer tes cadres avec le bon nom et rajouter Paul + Robert sinon la macro plante

Attention déjà je vois que justement tu as mis "Paul " avec un espace à la fin dans ta liste de validation des noms

A mettre dans ta feuille Cherche une personne:

'variable public visible et utilisable partout dans les macros
Public NOM_SELECTIONNE As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'quand on va dans la cellule B1 on garde en mémoire le nom de la personne actuelle
If ActiveCell = [B1] Then
    NOM_SELECTIONNE = ActiveCell.Value
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

's'active si la cellule est modifiée, attention quand on reprends le même nom dans la liste cela active quand même la boucle
'on va donc utiliser le nom garder en mémoire pour vérifier qu'on a bien changé de personne, si oui on cache l'ancienne et on affiche la nouvelle

If ActiveCell = [B1] Then
    If Not ActiveCell.Value = NOM_SELECTIONNE Then
        Sheets("Plan").Shapes(NOM_SELECTIONNE).Visible = False
        Sheets("Plan").Shapes(ActiveCell.Value).Visible = True
    End If
End If

End Sub

Pour les flèches qui vont avec, il te faudra les renommer et rajouter une ligne de code pour les cacher/afficher avec le nom qui va bien ou alors tu fais un groupe du cadre + la flèche et tu caches/affiche le groupe en entier (je ne maitrise pas mais cela doit se faire facilement).

Test déjà ça et dis moi ce que tu en penses.

ECG

Bonjour,

Merci pour votre réponse rapide.

Je n'arrive pas à faire fonctionner la macro, malgré avoir renommé les rectangles avec les noms et corrigé le nom Paul dans la liste déroulante.

J'ai deux questions :

  • Comment la macro sait que c'est le nom de cellule B1 de l'onglet "Chercher une personne" qu'il faut prendre en compte ?
  • Et à quoi fait référence le "NOM_SELECTIONNE" ?

J'ai changé j'utilise une seule forme, une rectangle comprenant déjà une flèche à la place du rectangle et de la flèche séparée.

Merci d'avance.

Cordialement,

Lou

Je mets un fichier ci-joint, j'ai modifier car j'ai remarqué que j'avais un cas qui faisait tout planter sur mon ancienne version (quand on sélectionnais plusieurs nom d'affilés sans quitter la liste des noms)

Du coup, on cache tous les cadres sauf ceux qu'on veut garder toujours visible comme le plan et après on affiche unitairement celui sélectionné dans la liste

Pour ta première question c'est la première ligne comme indiquée :

If ActiveCell = [B1] 

si la cellule active (celle ou se trouve le curseur dans excel, vaut la cellule B1 alors on fait la macro

Pour la deuxième question, plus de soucis à ce faire, je l'ai supprimé ^^

Test et dis moi si cela te convient

ECG

EDIT: si tu veux cacher la liste de nom n'oublie pas de la passer en xlVeryHidden par macro

Au pire tu peux même mettre une listbox (controle activeX) direct dans la feuille Plan voir même utiliser une liste qui autorise le multi ligne pour pouvoir sélectionner plusieurs personnes à la fois et comparer leurs position

Plein de choix possible

86cadre-test.xlsm (171.04 Ko)

Bonjour,

Merci beaucoup ça fonctionne super bien ^^

Cordialement,

Lou

Rechercher des sujets similaires à "macro montrer masquer objet condition texte"