Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Staple1600

XLDnaute Barbatruc
Re,

Phil69970 est sur le coup. Je suis en train de tester ces solutions.
Si je compte bien , nous sommes 3 à être sur le coup...
Ah la cape d'invisibilité a encore frappé.

Et il me semblait pourtant avoir posté des choses non dénuées d'intérêt dans le fil, non ?
 
Dernière édition:

Orson83

XLDnaute Impliqué
Le fil,
SUPER et merci Phil69970 ! J'ai adapté le code mais comment rassembler les 7 images ?
Worksheets("Données").Shapes("Bouton 1, Bouton 2").Visible = False ' ça ne marche pas, je vous rassure
Faut-il 1 ligne par image ?
 

Staple1600

XLDnaute Barbatruc
Re

Donc pour les lecteurs du fil
Une macro pour afficher/masquer les boutons
(en espérant qu'il n'y ait que des boutons)
VB:
Sub MasqueAfficherBouton()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If shp.Type = msoFormControl Then
shp.Visible = Not shp.Visible
End If
Next shp
End Sub
 

Phil69970

XLDnaute Barbatruc
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 : @Staple1600 je t'ai vu, tu as bougé...
Edit2: Astuce Si tu as que quelques boutons à masquer renomment ces boutons avec une numérotation pouvant être manipuler facilement exemple "Bouton 1" "Bouton 2" etc ..
Tu pourrais les manipuler avec la boucle For i =....

@Phil69970
 
Dernière édition:

Orson83

XLDnaute Impliqué
Le fil,
Merci beaucoup Phil69970 pour ce code que j'ai adapté à mes boutons d'affichage/masquage. C'est du super travail.
Et mapomme il était où pendant que tu bossais dur et que je préparai un fichier pour rien !
Je plaisante bien sûr car je sais que vous êtes très très actifs sur ce forum.
Bon weekend à tous les participants de ce fil.
Tchotchodu département 31
 

Staple1600

XLDnaute Barbatruc
Re

=>Phil69970
En reprenant mon idée du message#22, je l'adapte comme suit aprés la lecture du message#213 (qui se trouve être le tien )
Donc toujours une macro All-in-one
(On masque et démasque avec une seule macro)
VB:
Sub MasqueAfficherBouton_bis()
Dim Shp As Shape
For Each Shp In Feuil1.Shapes
If Shp.Name Like "Button*" Then
Shp.Visible = Not Shp.Visible
End If
Next
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

=>Phil69970
Et que penses-tu de ma All-in-one?
Elle est pas Vilaine, Ille, pardon elle, non ?

PS: La question à laquelle je t'invitais à répondre plus bas dans le fil, c'était sur les avantages CommanButton (ActiveX) versus Button ( Formulaire)
(cf message avec une jolie photo )
 

Phil69970

XLDnaute Barbatruc
@Staple1600
Le CommanButton (ActiveX) a beaucoup plus d'option que le bouton formulaire et toutes les options sont manipulables en vba assez facilement je pense.

Ta solution est bien sauf si il y a 50 boutons et que l'on veut en masquer que les 20 premiers...
d’où ma précision .
Edit2: Astuce Si tu as que quelques boutons à masquer renomment ces boutons avec une numérotation pouvant être manipuler facilement exemple "Bouton 1" "Bouton 2" etc ..
Tu pourrais les manipuler avec la boucle For i =....
@Phil69970
 

Staple1600

XLDnaute Barbatruc
Re

[Hommage à Jean Schultheis ]
Précisions pour Précisions
Si on ne veut masquer que certains parmi tous alors je sors TopLeftCell
Ici ne sont pris compte que les Boutons qui ont une affinité avec le 7.
VB:
Sub MasqueAfficherBouton_ter()
Dim Shp As Shape
For Each Shp In Feuil1.Shapes
If Shp.Name Like "Button*" Then
If Shp.TopLeftCell.Column = 7 Then
Shp.Visible = Not Shp.Visible
End If
End If
Next
End Sub
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…