Aide en VBA
Super !! C'est parfait
Encore une fois merci infiniment pour ton aide, ton temps, et tes commentaires c'est vraiment très clair.
Content que cela puisse t'aider ...
Merci ... pour tes remerciements ...
Bonjour James
Je suis à nouveau de retour sur le forum, on me demande encore de rajouter des conditions au fichier ...
Malheureusement je ne sais pas comment exprimer cette demande sous VBA
En fait, en plus de toutes les conditions déjà existantes dans le fichier il faudrait rajouter la suivante :
- Si la cellule A18 est cochée et que n'importe qu'elle autre cellule est également cochée (parmi: A17 à A23, D19 à D23 et H21 à H23) alors il faut afficher toutes les lignes et ne rien masquer. Cette condition est-elle réalisable ?
- Cette condition devra s'appliquer pour toutes les cellules surlignées en jaune, mais si tu fais le premier exemple je pense que j'arriverai à faire les suivants
Je te dis un grand merci d'avance.
Je remets le fichier en pièce jointe.
Je te souhaite également une bonne année 2018 à bientôt
Bonjour,
Très Bonne Année à toi aussi ...
Si je comprends bien ... ton patron a déjà des voeux ... mais, c'est à toi ... de les exaucer ...
Dès que j'ai un petit moment ... je replonge dans ton fichier et ta macro ...
Bonjour,
Très Bonne Année à toi aussi ...
Si je comprends bien ... ton patron a déjà des voeux ... mais, c'est à toi ... de les exaucer ...
Oh
Comment dire dans VBA :
- Si la cellule A18 est cochée et que n'importe qu'elle autre cellule est également cochée (parmi: A17 à A23, D19 à D23 et H21 à H23) ?
Je pense pouvoir me débrouiller à partir de ça
Re,
Si tu n'as besoin que de la logique d'une macro ...
Ci-dessous, j'ai essayé de te préparer un code commenté ... le plus clair possible ...
Sub TestCondition()
Dim compte As Long
' Si la cellule A 18 est cochée
If LCase(Range("A18").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D19:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then MsgBox " La condition est remplie"
End SubEn espérant que cela t'aide ...
Re,
Si tu n'as besoin que de la logique d'une macro ...
Ci-dessous, j'ai essayé de te préparer un code commenté ... le plus clair possible ...
Sub TestCondition() Dim compte As Long ' Si la cellule A 18 est cochée If LCase(Range("A18").Value) = "x" Then tot = 1 ' Faire le décompte de cellules cochées ' dans les trois plages déterminées With Application.WorksheetFunction compte = .CountIf(Range("A17:A23"), "x") + _ .CountIf(Range("D19:D23"), "x") + _ .CountIf(Range("H21:H23"), "x") End With End If ' Recalculer le nouveau total tot = tot + compte ' Si ce nombre est égal ou supérieur à 2, ' la condition est remplie If tot >= 2 Then MsgBox " La condition est remplie" End SubEn espérant que cela t'aide ...
Bonjour
Merci pour ton aide mais ça ne fonctionne pas... J'ai ça qui s'affiche
Comment faire ?? Je ne suis vraiment pas douée
Merci d'avance
Bonjour,
Désolé ... j'ai oublié de déclarer une variable ...
Sub TestCondition()
Dim compte As Long
Dim tot As Long
' Si la cellule A 18 est cochée
If LCase(Range("A18").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D19:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then MsgBox " La condition est remplie"
End SubAttention ... cette macro est une macro standard ... qu'il faut placer dans Module1 ... et pas dans la Feuille ...
En espérant que cela te permette de faire tes tests ...
Bonjour,
Désolé ... j'ai oublié de déclarer une variable ...
Sub TestCondition() Dim compte As Long Dim tot As Long ' Si la cellule A 18 est cochée If LCase(Range("A18").Value) = "x" Then tot = 1 ' Faire le décompte de cellules cochées ' dans les trois plages déterminées With Application.WorksheetFunction compte = .CountIf(Range("A17:A23"), "x") + _ .CountIf(Range("D19:D23"), "x") + _ .CountIf(Range("H21:H23"), "x") End With End If ' Recalculer le nouveau total tot = tot + compte ' Si ce nombre est égal ou supérieur à 2, ' la condition est remplie If tot >= 2 Then MsgBox " La condition est remplie" End SubAttention ... cette macro est une macro standard ... qu'il faut placer dans Module1 ... et pas dans la Feuille ...
En espérant que cela te permette de faire tes tests ...
Merci, du coup le message d'erreur ne s'affiche plus.
Mais il ne se passe rien c'est comme si ça ne prenait pas en compte cette partie de la macro...
J'abandonne.....
Je te remercie pour tout c'est déjà bien
Re,
C'est normal qu'il ne se passe rien ... puisqu'il s'agit d'une macro standard ... et pas d'une macro évènementielle ...
Une macro standard a besoin d'être lancée ... dans le Menu ou avec les deux touches Alt F8
Désolé d'apprendre que tu as décidé d'abandonner ...
Re,
C'est normal qu'il ne se passe rien ... puisqu'il s'agit d'une macro standard ... et pas d'une macro évènementielle ...
Une macro standard a besoin d'être lancée ... dans le Menu ou avec les deux touches Alt F8
Désolé d'apprendre que tu as décidé d'abandonner ...
Ah d'accord......
Ben tu vois je ne sais même pas ce que c'est qu'une macro standard ou événementielle
C'est vraiment trop compliqué et j'y comprends absolument rien (sauf tes explications) mais je n'arrive pas à trouver d'infos sur internet avec des explications sur le langage utilisé etc et même les tutos..... j'en trouve aucun qui corresponde à mon cas et je ne pense pas être capable à apprendre VBA toute seule! C'est pas évident
Ben tu vois je ne sais même pas ce que c'est qu'une macro standard ou évènementielle
Re,
En quelques mots ... au sujet des macros ...deux types:
1. Macro standard ... placée dans un Module standard ... que l'on lance avec Alt F8
2. Macro évènementielle ...placée dans le module de la feuille ... qui possède la particularité étonnante de ' se lancer toute seule ' justement au moment où l'utilisateur fait une certaine action ( l'évènement qui déclenche la macro ...)
En espérant que l'explication soit assez claire ...
Bonjour,
J'avais le même soucis que vous avec VBA.
C'est hier que je me suis mis a lire ce cours https://www.excel-pratique.com/fr/vba.php ,
et j'avoue que c'est mieux qu'un instructeur en classe. Merci à ceux qui ont fait ces tutos. J'ai des tonnes de livres en VBA même en vidéo mais ce cours , c'est simplement magique.
Il commence au niveau zéro. Je compte meme l'imprimer des que j'ai l'occasion.
Bonne chance!
Merci
Je vais regarder, j'espère améliorer mon niveau et acquérir des nouvelles compétences avec ça
Merci aussi pour ton explication James.
Mais du coup n'est-il pas possible de transformer la macro standard en événementielle ? c'est ce que je recherche en fait
Merci
Je vais regarder, j'espère améliorer mon niveau et acquérir des nouvelles compétences avec ça
Merci aussi pour ton explication James.
Mais du coup n'est-il pas possible de transformer la macro standard en événementielle ? c'est ce que je recherche en fait
Re,
De rien ...
Effectivement ... il est possible de transformer la macro standard en en macro évènementielle ...
Je te ferai simplement remarquer qu'avant de le faire ... il faut la tester ... pour être sûr
1. qu'elle fonctionne ...
2. qu'elle produit bien le résultat que tu attends ...
Merci
Je vais regarder, j'espère améliorer mon niveau et acquérir des nouvelles compétences avec ça
Merci aussi pour ton explication James.
Mais du coup n'est-il pas possible de transformer la macro standard en événementielle ? c'est ce que je recherche en fait
Re,
De rien ...
Effectivement ... il est possible de transformer la macro standard en en macro évènementielle ...
Je te ferai simplement remarquer qu'avant de le faire ... il faut la tester ... pour être sûr
1. qu'elle fonctionne ...
2. qu'elle produit bien le résultat que tu attends ...
Merci
Donc ça fonctionne et du coup ça produit bien le résultat voulu !!
J'espère que le tout fonctionnera bien.
Je colle la macro à la suite :
Sub TestCondition()
Dim compte As Long
Dim tot As Long
' Si la cellule A 18 est cochée
If LCase(Range("A$18").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("A$19").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("D$19").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("D$20").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("H$21").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
End Sub
Est-ce que tu peux la transformer en macro événement du coup ?
Merci
Re,
Je comprends qu'à partir de l'exemple initial ... tu as transformé la macro pour y intégrer tous tes cas ...
Tout d'abord ... toutes mes félicitations ...
Sub TestConditions()
Dim compte As Long
Dim tot As Long
' Si la cellule A 18 est cochée
If LCase(Range("A$18").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("A$19").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("D$19").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("D$20").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("H$21").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
End SubA ce stade, deux possibilités :
1. Utiliser ton code existant et ajouter simplement l'évènement qui déclenche ta macro ...
ou
2. Transformer la macro standard en macro évènementielle ...
Dans les deux cas, tu dois décider quel est l'évènement qui doit déclencher cette macro ...
Re,
Je comprends qu'à partir de l'exemple initial ... tu as transformé la macro pour y intégrer tous tes cas ...
Tout d'abord ... toutes mes félicitations ...
Sub TestConditions() Dim compte As Long Dim tot As Long ' Si la cellule A 18 est cochée If LCase(Range("A$18").Value) = "x" Then tot = 1 ' Faire le décompte de cellules cochées ' dans les trois plages déterminées With Application.WorksheetFunction compte = .CountIf(Range("A17:A23"), "x") + _ .CountIf(Range("D17:D23"), "x") + _ .CountIf(Range("H21:H23"), "x") End With End If ' Recalculer le nouveau total tot = tot + compte ' Si ce nombre est égal ou supérieur à 2, ' la condition est remplie If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False If LCase(Range("A$19").Value) = "x" Then tot = 1 ' Faire le décompte de cellules cochées ' dans les trois plages déterminées With Application.WorksheetFunction compte = .CountIf(Range("A17:A23"), "x") + _ .CountIf(Range("D17:D23"), "x") + _ .CountIf(Range("H21:H23"), "x") End With End If ' Recalculer le nouveau total tot = tot + compte ' Si ce nombre est égal ou supérieur à 2, ' la condition est remplie If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False If LCase(Range("D$19").Value) = "x" Then tot = 1 ' Faire le décompte de cellules cochées ' dans les trois plages déterminées With Application.WorksheetFunction compte = .CountIf(Range("A17:A23"), "x") + _ .CountIf(Range("D17:D23"), "x") + _ .CountIf(Range("H21:H23"), "x") End With End If ' Recalculer le nouveau total tot = tot + compte ' Si ce nombre est égal ou supérieur à 2, ' la condition est remplie If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False If LCase(Range("D$20").Value) = "x" Then tot = 1 ' Faire le décompte de cellules cochées ' dans les trois plages déterminées With Application.WorksheetFunction compte = .CountIf(Range("A17:A23"), "x") + _ .CountIf(Range("D17:D23"), "x") + _ .CountIf(Range("H21:H23"), "x") End With End If ' Recalculer le nouveau total tot = tot + compte ' Si ce nombre est égal ou supérieur à 2, ' la condition est remplie If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False If LCase(Range("H$21").Value) = "x" Then tot = 1 ' Faire le décompte de cellules cochées ' dans les trois plages déterminées With Application.WorksheetFunction compte = .CountIf(Range("A17:A23"), "x") + _ .CountIf(Range("D17:D23"), "x") + _ .CountIf(Range("H21:H23"), "x") End With End If ' Recalculer le nouveau total tot = tot + compte ' Si ce nombre est égal ou supérieur à 2, ' la condition est remplie If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False End SubA ce stade, deux possibilités :
1. Utiliser ton code existant et ajouter simplement l'évènement qui déclenche ta macro ...
ou
2. Transformer la macro standard en macro évènementielle ...
Dans les deux cas, tu dois décider quel est l'évènement qui doit déclencher cette macro ...
Mercii
Franchement je ne sais pas quelle option choisir entre tes deux propositions, car je n'arrive pas à voir les différences entre ces deux propositions.
Dans tous les cas, l'événement qui déclenche la macro est toujours ce fameux "X". Là, la macro se déclenche s'il y a un "X" dans l'une des cases en jaune (c'est à dire A18, A19, D19, D20 ou H21). Si l'une des cases est cochée et qu'une autre case (peut importe laquelle) est également cochée toutes les lignes doivent être affichées.
Du coup, je ne sais pas quelle proposition est la plus adaptée peux tu choisir à ma place ?
Voici la macro entière pour info:
Option Explicit
Private Sub Worksheet_Activate()
Range("A18,A19,D19,D20,H21").Value = "o"
Rows("79:215").EntireRow.Hidden = False
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
' Le marquage avec un X doit afficher certaines lignes et en cacher d'autres.
' Lorsque le X n'est pas cochée toutes les lignes doivent s'afficher.
If Target.CountLarge > 1 Then Exit Sub
If Intersect(Target, Range("A18,A19,D19,D20,H21")) Is Nothing Then Exit Sub
Select Case Target.Address
Case "$A$18"
If LCase(Target.Value) = "x" Then
' Cacher
Rows("138:168").EntireRow.Hidden = False
' Afficher
Rows("79:169").EntireRow.Hidden = True
Rows("191:215").EntireRow.Hidden = True
Else
' Tout Afficher
Rows("79:215").EntireRow.Hidden = False
End If
Case "$A$19"
If LCase(Target.Value) = "x" Then
' Cacher
Rows("138:168").EntireRow.Hidden = False
' Afficher
Rows("79:169").EntireRow.Hidden = True
Rows("191:215").EntireRow.Hidden = True
Else
' Tout Afficher
Rows("79:215").EntireRow.Hidden = False
End If
Case "$D$19"
If LCase(Target.Value) = "x" Then
' Cacher
Rows("191:215").EntireRow.Hidden = False
' Afficher
Rows("79:190").EntireRow.Hidden = True
Else
' Tout Afficher
Rows("79:215").EntireRow.Hidden = False
End If
Case "$D$20"
If LCase(Target.Value) = "x" Then
' Cacher
Rows("138:169").EntireRow.Hidden = False
' Afficher
Rows("79:137").EntireRow.Hidden = True
Rows("170:215").EntireRow.Hidden = True
Else
' Tout Afficher
Rows("79:215").EntireRow.Hidden = False
End If
Case "$H$21"
If LCase(Target.Value) = "x" Then
' Cacher
Rows("138:215").EntireRow.Hidden = True
Else
' Tout Afficher
Rows("79:215").EntireRow.Hidden = False
End If
End Select
End Sub
Sub TestCondition()
Dim compte As Long
Dim tot As Long
' Si la cellule A 18 est cochée
If LCase(Range("A$18").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("A$19").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("D$19").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("D$20").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
If LCase(Range("H$21").Value) = "x" Then
tot = 1
' Faire le décompte de cellules cochées
' dans les trois plages déterminées
With Application.WorksheetFunction
compte = .CountIf(Range("A17:A23"), "x") + _
.CountIf(Range("D17:D23"), "x") + _
.CountIf(Range("H21:H23"), "x")
End With
End If
' Recalculer le nouveau total
tot = tot + compte
' Si ce nombre est égal ou supérieur à 2,
' la condition est remplie
If tot >= 2 Then Rows("79:215").EntireRow.Hidden = False
End Sub
Re,
Je te recommande d'avoir dans le module de ta Feuille
Option Explicit
Private Sub Worksheet_Activate()
Range("A18,A19,D19,D20,H21").Value = "o"
Rows("79:215").EntireRow.Hidden = False
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
' Le marquage avec un X doit afficher certaines lignes et en cacher d'autres.
' Lorsque le X n'est pas cochée toutes les lignes doivent s'afficher.
If Target.CountLarge > 1 Then Exit Sub
If Intersect(Target, Range("A18,A19,D19,D20,H21")) Is Nothing Then Exit Sub
' Lancer la macro qui teste toutes les conditions
Application.Run ("TestConditions")
End Subet le code de ta macro TestConditions dans le Module 1 ...
Dis-moi ...si tout fonctionne comme tu le voulais ...
Re,
Je te recommande d'avoir dans le module de ta Feuille
Option Explicit Private Sub Worksheet_Activate() Range("A18,A19,D19,D20,H21").Value = "o" Rows("79:215").EntireRow.Hidden = False End Sub Private Sub Worksheet_Change(ByVal Target As Range) ' Le marquage avec un X doit afficher certaines lignes et en cacher d'autres. ' Lorsque le X n'est pas cochée toutes les lignes doivent s'afficher. If Target.CountLarge > 1 Then Exit Sub If Intersect(Target, Range("A18,A19,D19,D20,H21")) Is Nothing Then Exit Sub ' Lancer la macro qui teste toutes les conditions Application.Run ("TestConditions") End Subet le code de ta macro TestConditions dans le Module 1 ...
Dis-moi ...si tout fonctionne comme tu le voulais ...
Ça a fonctionné puis j'ai eu un message d'erreur qui est apparu:
et depuis ça ne fonctionne plus.
Faut-il que je supprime "This Workbook" ?
Re,
Dans l'ordre :
1. Dans ThisWorkbook ... rien du tout ... donc tout effacer ...
2. Dans Feuille 1 ... les deux macros événementielles
3. Dans Module 1 ... la macro TestConditions ... bien vérifier l'orthographe ...
