[RESOLU] faire une seule ligne de commande pour plusieurs with

charbsou

XLDnaute Nouveau
me revoila ,

j'ai un code que j'aimerai voir plus court, si quelqu'un pouvait me dire comment sur une meme ligne mettre pour cette action, toutes les feuilles plutot que de faire le code pour chaque feuille du meme classeur. j'ai essaye plein de choses au ptit bonheur la chance mais rien de bon.

en voila une parti normalement, il va jusqu'a la feuil7 comprise sachant qu'il y a un bouton different pour les feuilles suivante, le bouton ("button 1")

im Cel As Range
With Feuil3.Shapes("Button 12").TextFrame.Characters ' Le texte inscrit dans le bouton


If .Text = "Masque" Then ' Si il s'appelle "Masque"
.Text = "Démasque" ' On le renomme
Range("19:41,45:71,75:92,96:128").EntireRow.Hidden = True ' On fait le masquage
Else
.Text = "Masque" ' Sinon on le renomme en "Masque"
For Each Cel In Range("B19:B128") ' On parcourt toute la colonne B de la ligne 19 à la ligne 128
If Trim(Cel) <> "" Then Rows(Cel.Row).Hidden = False ' Si la cellule est vide (ou seulement des espaces) on masque la ligne
Next Cel ' On passe à la suivante
End If

End With


With Feuil4.Shapes("Button 12").TextFrame.Characters
If .Text = "Masque" Then ' Si il s'appelle "Masque"
.Text = "Démasque" ' On le renomme
Range("19:41,45:71,75:92,96:128").EntireRow.Hidden = True ' On fait le masquage
Else
.Text = "Masque" ' Sinon on le renomme en "Masque"
For Each Cel In Range("B19:B128") ' On parcourt toute la colonne B de la ligne 19 à la ligne 128
If Trim(Cel) <> "" Then Rows(Cel.Row).Hidden = False ' Si la cellule est vide (ou seulement des espaces) on masque la ligne
Next Cel ' On passe à la suivante
End If

End With


encore merci pour tout
 
Dernière édition:

Banzai64

XLDnaute Accro
Re : faire une seule ligne de commande pour plusieurs with

Bonjour

Tous tes boutons pointent vers cette macro
Il ne sont pas obligés d'avoir le même nom
Dans toutes les pages ce sera le même code qui est appliqué

VB:
Sub Macro_Bouton12()
  With ActiveSheet.Shapes(Application.Caller).TextFrame.Characters          ' Le texte inscrit dans le bouton
    If .Text = "Masque" Then                                    ' Si il s'appelle "Masque"
      .Text = "Démasque"                                        ' On le renomme
      Range("19:41,45:71,75:92,96:128").EntireRow.Hidden = True ' On fait le masquage
    Else
      .Text = "Masque"                                          ' Sinon on le renomme en "Masque"
      For Each Cel In Range("B19:B128")                         ' On parcourt toute la colonne B de la ligne 19 à la ligne 128
        If Trim(Cel) <> "" Then Rows(Cel.Row).Hidden = False    ' Si la cellule est vide (ou seulement des espaces) on masque la ligne
      Next Cel                                                  ' On passe à la suivante
    End If
  End With
End Sub

Bonne nuit
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 334
Membres
102 864
dernier inscrit
abderrashmaen