[ RÉSOLU] Comment éviter le bouton macro

un internaute

XLDnaute Impliqué
Bonjour le forum
Vous m'avez appris il y a quelques jours à éviter un bouton en faisant un clic sur une cellule.
Macro ci-dessous:

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal R As Range)
  If R.Address = "$A$3" And R.Count = 1 Then Columns("G:I").Hidden = Not Columns("G:I").Hidden: R(1, 2).Select
End Sub

Mais je voudrais le faire avec la macro ci-dessous

Code:
Sub LignesRegularisationColonnesExplications()
  Application.ScreenUpdating = False
  With ActiveSheet
    .Unprotect
    If .Columns("G:I").Hidden = True Then
      .Columns("G:I").Hidden = False
    Else: .Columns("G:I").Hidden = True
    End If
    For Each Cel In .Range("E10:E14,E16:E29,E40:E44,E46:E59,E70:E74,E76:E89,E100:E104,E106:E119")
      If Cel = "" Then
        Cel.EntireRow.Hidden = Not Cel.EntireRow.Hidden
      End If
    Next Cel
    .Range("A1").Select
    .Protect
  End With
End Sub
Mais j'ai quelques souccis pour y parvenir
alors je reviens vers vous encore une fois
Merci d'avance pour vos retours
Cordialement
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@un internaute
Je ne peux pas mettre de fichier dommage
L’empêchement est de quel ordre?

Sinon, est-ce que par hasard, ceci produit le même effet que la macro initiale?
Code:
Sub LignesRegularisationColonnesExplications_Bis()
Dim R As Range, Z As Range: Set Z = Columns("G:I"): Set R = [E10:E14,E16:E29,E40:E44,E46:E59,E70:E74,E76:E89,E100:E104,E106:E119]
R.SpecialCells(4).EntireRow.Hidden = Not R.SpecialCells(4).EntireRow.Hidden: Z.Hidden = Not Z.Hidden
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@un internaute
Qu'elle fonctionne, ça je le savais déjà (sinon je n'aurai pas posté le code VBA) ;)
Ma question était est-ce qu'elle produit le même effet que ta macro? (celle que tu as posté dans le message#1) ?

Pour le reste ???
Ta macro initiale aussi ne "fonctionnait" pas sur un clic.. (d'où ce fil de discussion)
Je viens de tester en simplement reprenant ta solution du message#5
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$3" Then     'Cellule non fusionnée
LignesRegularisationColonnesExplications_Bis
End If
End Sub
Et j'ai réécrit mon code VBA pour qu'il soit plus lisible
(Dans un module standard)
Code:
Sub LignesRegularisationColonnesExplications_Bis()
Dim R As Range, Z As Range
Set Z = Columns("G:I")
Set R = ActiveSheet.Range("E10:E14,E16:E29,E40:E44,E46:E59,E70:E74,E76:E89,E100:E104,E106:E119")
R.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = Not R.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden
Z.Hidden = Not Z.Hidden
End Sub

NB: Avec ce code*, il y a un effet "bascule"
Quand tu es en A3, les colonnes et lignes sont masquées
Quand tu sors de A3, les colonnes et lignes sont de nouveau affichées.

*: C'était déjà le cas, dans le code précédent:
1ere exécution de la macro, masquage
2ième exécution de la macro, affichage
 

Statistiques des forums

Discussions
312 102
Messages
2 085 303
Membres
102 857
dernier inscrit
Nony1931