Macro VBA Afficher-masquer des objets selon conditions

  • Initiateur de la discussion Initiateur de la discussion adrian
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

adrian

XLDnaute Nouveau
Bonjour à tous,

Après un long moment passé sans poser de questions, me revoici bloqué par mes connaissances approximatives de VBA.

Je joins un fichier exemple pour illustrer mon problème qui est le suivant :

- j'ai une colonne composée de références d'articles, "référence1", "référence2" etc...
- des objets (ensemble de points et de flèches représentant des flux logistiques) nommés comme ces références

je souhaiterais faire une macro qui me permette d'afficher uniquement les objets dont la référence est saisie en colonne B.

merci de votre attention et de vos conseils avisés à venir 😉

Je suivrais avec attention le fil pour répondre aux questions si ma demande n'est pas assez claire.
 

Pièces jointes

Re : Macro VBA Afficher-masquer des objets selon conditions

Bonjour adrian,

Comme ça peut-être :
VB:
Sub AfficherObj()
    With Sheets("C6-Transport")
        For Each sh In .Shapes
            For i = 13 To .Range("B65536").End(xlUp).Row
                If .Range("B" & i) = sh.Name Then
                    sh.Visible = True
                    Exit For
                Else
                    sh.Visible = False
                End If
            Next i
        Next sh
    End With
End Sub

Bonne journée.
 
Re : Macro VBA Afficher-masquer des objets selon conditions

Bonjour,

En regardant ton fichier et en supposant que lorsque dans une cellule il est écrit "vide" cela signifie qu'elle est effectivement vide, un filtre automatique en choisissant "Non vides" en bas de liste devrait faire l'affaire, non ?
 
Re : Macro VBA Afficher-masquer des objets selon conditions

Merci WUTED pour ta réponse, en effet cela fonctionne.

Petit bémol, les autres objets qui ne sont pas liés à des références disparaissent également (le rectangle sur lequel j'applique la macro notamment ou encore le "rond" de la légende).

Pour résoudre ce souci, je suppose qu'il faut ajouter au code que tu as créé quelques lignes à la fin demandant de rendre visible les formes concernées, quel code dois-je saisir (xxx.visible = True mais quoi donc à la place de xxx) ?

PS : bonjour à toi Pat, pour les cellules vides, ce n'était qu'un exemple montrant que l'utilisateur renseigne le contenu de ces cellules grâce à une liste de choix prédéfinis (et donc "vide" s'il n'y a pas de référence). Il n'y a pas d'objet associé à "vide" par conséquent ce n'est pas gênant de garder des cellules avec cet intitulé.
 
Re : Macro VBA Afficher-masquer des objets selon conditions

Re,

VB:
Sub AfficherObj()
    With Sheets("C6-Transport")
        For Each sh In .Shapes
            If sh.Name <> refRectange And sh.Name <> refRond Then
              For i = 13 To .Range("B65536").End(xlUp).Row
                  If .Range("B" & i) = sh.Name Then
                      sh.Visible = True
                      Exit For
                  Else
                      sh.Visible = False
                  End If
              Next i
            End if
         Next sh
    End With
End Sub
En remplaçant refRectange et refRond par le nom de tes figures, devrait faire l'affaire.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour