macro évenementielle

yannick63430

XLDnaute Junior
Bonjour à tous,

j'ai besoin d'aide concernant la création d'un fichier excel !!!!!
En fait, je voudrais que sur différentes cellules, lorsqu'un utilisateur saisit Oui ou Non, une macro se déclenche (grouper ou dégrouper une plage de cellule).
j'ai essayer avec la macro suivante :


Private Sub Worksheet_Change(ByVal Target As Range)

If Range("Cell_audit_interne").Value = "Oui" Then
Range("Cell_audit_interne_Group").Select
Selection.EntireRow.Hidden = False
Else
Range("Cell_audit_interne_Group").Select
Selection.EntireRow.Hidden = True
End If
If Range("Cell_Expert_externe").Value = "Oui" Then
Range("Cell_Expert_externe_Group").Select
Selection.EntireRow.Hidden = False
Else
Range("Cell_Expert_externe_Group").Select
Selection.EntireRow.Hidden = True
End If
End Sub​


Mais, je suis confronté à différents problème :
- dès que je saisi sur d'autres cellules ou que je déclenche un grouper/dégrouper, la macro se déclenche et je ne veux pas qu'elle s’exécute
- Impossible d'annuler ou de rétablir

En espérant avoir été clair.
D'avance merci.

Bien cordialement
 

Pièces jointes

  • Classeur1.xlsm
    52.9 KB · Affichages: 32
  • Classeur1.xlsm
    52.9 KB · Affichages: 37
  • Classeur1.xlsm
    52.9 KB · Affichages: 38

st007

XLDnaute Barbatruc
Re : macro évenementielle

Bonsoir,
J'ajouterais la condition if not intersect pour définir que seul une modification dans cette plage execute la macro
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([Cell_audit_interne , Cell_Expert_externe], Target) Is Nothing Then
If Range("Cell_audit_interne").Value = "Oui" Then
Range("Cell_audit_interne_Group").Select
Selection.EntireRow.Hidden = False
Else
Range("Cell_audit_interne_Group").Select
Selection.EntireRow.Hidden = True
End If
If Range("Cell_Expert_externe").Value = "Oui" Then
Range("Cell_Expert_externe_Group").Select
Selection.EntireRow.Hidden = False
Else
Range("Cell_Expert_externe_Group").Select
Selection.EntireRow.Hidden = True
End If
End If
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : macro évenementielle

Bonjour yannick63430, st007,

On peut un peu réduire le code initial de yannick63430.
VB:
Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([Cell_audit_interne , Cell_Expert_externe], Target) Is Nothing Then
Range("Cell_audit_interne_Group").EntireRow.Hidden = Range("Cell_audit_interne") <> "oui"
Range("Cell_Expert_externe_Group").EntireRow.Hidden = Range("Cell_Expert_externe") <> "oui"
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch