XL 2010 Perte aléatoire de boutons sur lignes masquées/affichées

Orson83

XLDnaute Impliqué
Bonjour à tous,
Dans un processus de masquage/affichage de lignes, certains boutons (non activeX) présents sur certaines lignes se suppriment aléatoirement. Je ne comprends pas pourquoi alors même qu'ils sont paramétrés correctement (Format de Contrôle>Propriété> Déplacer et dimensionner avec les cellules). Ces boutons sont réalisés depuis le menu Développeur>Insérer bouton.
Auriez-vous une astuce pour forcer l'affichage de ces boutons lorsque je clique sur mon (autre) bouton "Afficher les lignes" ?
Merci pour votre aide.
Tchotchodu31
 
Solution
Le fil

VB:
Sub MasqueBouton()
Dim Shp As Shape
Dim i As Integer

'Boucle sur les bouton de la Feuil1 (A adapter)
'Si tu veux tout masquer cette boucle est inutile ==> For i =....
For i = 1 To 7 'Si tes numéros de bouton sont de 1 à 7 (A adapter)
    For Each Shp In Feuil1.Shapes
        If Shp.Name = "Button " & i Then Shp.Visible = False
    Next Shp
Next i
End Sub

Sub AfficheBouton()
Dim Shp As Shape
Dim i As Integer

'Boucle sur les bouton de la Feuil1 (A adapter)
'Si tu veux tout masquer cette boucle est inutile ==> For i =....
For i = 1 To 7 'Si tes numéros de bouton sont de 1 à 7 (A adapter)
    For Each Shp In Feuil1.Shapes
        If Shp.Name = "Button " & i Then Shp.Visible = True
    Next Shp
Next i
End Sub

Edit ...

Orson83

XLDnaute Impliqué
Bonjour chers lecteurs, le fil,
Je reviens ici pour apporter une contribution à ma demande initiale.
Selon ma demande qui indiquait que les boutons se supprimaient, Phil69970 a répondu correctement au post #23.
En creusant un peu plus, je me suis aperçu que les boutons étaient finalement écrasés en même temps que les lignes étaient masquées (donc boutons devenus invisibles).
En fouillant sur le Net, j'ai trouvé une macro qui a résolue mon problème. Cette macro gère toutes les "Shapes", respecte le ratio hauteur/largeur (attention de bien cocher "Proportionnel" dans le format de contrôle) et contrôle les dimensions des images avec l'affichage/masquage des lignes selon les attributs :
xlFreeFloating -> L'objet est flottant
xlMove -> L'objet est déplacé avec les cellules
xlMoveAndSize -> L'objet est déplacé et redimensionné avec les cellules
Voici le code :
VB:
Sub GestionImages()
Dim Shp As Shape
    For Each Shp In ActiveSheet.Shapes
        If Shp.Type = msoPicture Then
        With Shp
            .Placement = xlMoveAndSize ' ou xlMove ou xlFreeFloating
            .LockAspectRatio = msoTrue
        End With
        End If
    Next
End Sub
Si toutefois mon explication n'était pas correcte, merci aux experts d'Excel de bien vouloir la corriger.
Bonne journée.
Tchotchodu31
 

Statistiques des forums

Discussions
312 226
Messages
2 086 413
Membres
103 202
dernier inscrit
Claire2BM