Boutons macros bougent et rétrécissent à la réouverture

en fait le ActiveWindow.ScrollRow = 35, me sert à afficher toutes les cellules : quand je suis sur la page en enregistreur de macro je met une hauteur de ligne passant de 20 à 21 puis je repasse à 20 ce qui a pour effet de ré afficher toutes les lignes qui étaient masquées pour masquer cette fois d'autres lignes. Donc je ré affiche tout et je masque les lignes qu'il faut en fonction de chaque boutons.

j'avais mal compris votre message, oui il s'agit des scroll de souris pour sélectionner mes plages que je peux donc supprimer

ActiveWindow.ScrollRow = 35 est le résultat, l'interprétation de l'enregistreur de macro suite à un Scroll de la feuille cela n'a rien à voir avec le fait de les afficher ou non. Pour l'affichage c'est EntireRow.Hidden = False et le masquage EntireRow.Hidden = True, ou bien alors en jouant sur la hauteur de la ligne (ou sa largeur) en la mettant à 0 pour masquer ou bien une valeur positive pour l'afficher.
En reprenant mon code "simplifié" : avec les commentaires en plus :
Sub RisqActR4()
    ActiveSheet.Unprotect ' on enlève la protection de la feuille
    Cells.RowHeight = 25 ' toutes les lignes ont une hauteur de 25 ce qui a pour effet de rendre visible celles qui étaient masquées
    Range("J77:J401,J405").ClearContents ' on efface les données sur une plage et une cellule
    Range("46:48,52:54,58:60,75:255,278:401,407:413,423:443").EntireRow.Hidden = True ' on sélectionne plusieurs lignes non contigües et on les masque
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ' on reprotège la feuille
End Sub

@ bientôt

LouReeD

Merci.

Pensez-vous qu'en faisant cela, mon problème de hauteur de boutons sera réglé?

Faut voir le fichier dans sa globalité mais rien n'est impossible sinon c'est que ce n'est pas Excel !

Et puis ici il y en a du monde qui s'y connait ! Je ne suis pas le meilleur mais je me défend !

@ bientôt

LouReeD

bonjour,

un teste avec 10*10 boutons et si vous changez la taille ou cacher les lignes, à mon avis cela ne bouge pas.

la macro "make shapes" crée les boutons

9boutons1001.xlsm (30.48 Ko)

Bonsoir Joe888, Le Fil,

Allez, dernier essai selon la 1ière image postée.

Private Sub Workbook_Open()
With Sheets("Yaunloup")
.Rows("47").RowHeight = 26.25
.Rows("50").RowHeight = 26.25
.Rows("63:69").RowHeight = 26.25
End with
End Sub

Ainsi, seuls les boutons OUI et NON des lignes 47 et 50 et tous ceux des lignes 63 à 69 reviendront. Afin de pouvoir à nouveau être utilisés.

Et les lignes cachées par la dernière sauvegarde ne sera pas impactée comme tu le souhaitais.

Sinon passez par un formulaire (appelable selon choix) qui contiendra tous les boutons actifs pour ta feuille et ne seront pas tributaires des lignes de cette dernière.

Merci à tous mais j'ai finalement toujours le problème avec n'importe quelle solution

BsAlv,

j'essaie votre technique, pourriez-vous modifier la macro make shape pour créer des case dans :

D63 F63 H63 J63 L63

D66 F66 H66 J66 L66

D69 F69 H69 J69 L69

soit 15 cases ?

bonjour, 15 cases :

Sub make_Shapes()
Dim MesColonnes: MesColonnes = Array("D", "F", "H", "J", "L")

     With ActiveSheet
          .Shapes.SelectAll
          Selection.Delete
          Set shp = .Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 200)
          For i = 63 To 70 Step 3
               For Each col In MesColonnes
               Set c = .Cells(i, col)
                    shp.Copy
                    .Paste
                    Wachten 'Application.Wait Now + TimeSerial(0, 0, 1)
                    With .Shapes(.Shapes.Count)
                         .Left = c.Left
                         .Top = c.Top
                         .Width = Application.Max(c.Offset(, 1).Left - c.Left - 0, 1)
                         .Height = Application.Max(c.Offset(1).Top - c.Top - 0, 1)
                         .Placement = xlMoveAndSize
                         .Fill.ForeColor.RGB = RGB(WorksheetFunction.RandBetween(0, 255), WorksheetFunction.RandBetween(0, 255), WorksheetFunction.RandBetween(0, 255))
                         .TextFrame2.TextRange.Characters.Text = "mon bouton " & c.Address
                         .OnAction = "Bonjour"
                    End With
                                Next
          Next
     End With
End Sub

Bonjour BsAlv,

j'ai un message d'erreur en exécutant la macro : "erreur de compilation : Sub ou function non définie" au niveau de "wachten"

J'ai quelque chose qui à l'air de fonctionner, à confirmer.

Rattacher mes macros non pas à des boutons mais à des zones de textes, elles n'ont pas l'air de subir l’aplatissement des boutons.

Merci à LouReed

bonjour,

en annexe le fichier

2boutons1001.xlsm (25.84 Ko)
Rechercher des sujets similaires à "boutons macros bougent retrecissent reouverture"