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

[ 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
 

M12

XLDnaute Accro
Bonjour,

A tester


Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal R As Range)
  If R.Address = "$A$3" And R.Count = 1 Then Sub LignesRegularisationColonnesExplications
End Sub
 

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:

un internaute

XLDnaute Impliqué
Bonjour le forum
A mettre dans la feuille

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Target.Address = "$A$3" Then     'Cellule non fusionnée
Call LignesRegularisationColonnesExplications
End If
End Sub
Merci à tous
 

un internaute

XLDnaute Impliqué
Bonjour Ce lien n'existe plus
Excuse pas vu car pas reçu de mail et comme je n'ai pas été voir dans le forum.
Effectivement ta macro fonctionne avec un bouton mais pas avec un clic (cellule A3)
Merci à toi
Bonne fin de WE
Cordialement
 

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…