Problèmes code VBA
bonjour à toutes et à tous,
je viens de saisir un code VBA et ce dernier ne fonctionne pas, je ne comprends pas pourquoi
quelqu'un peut-il m'aider ?
voici le code :
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
With Sheets("offre")
.Rows("39:39").Hidden = Range("I9") = 0
.Rows("40:40").Hidden = Range("I10") = 0
.Rows("41:41").Hidden = Range("I11") = 0
.Rows("42:42").Hidden = Range("I12") = 0
.Rows("43:43").Hidden = Range("I13") = 0
.Rows("44:44").Hidden = Range("I14") = 0
.Rows("45:45").Hidden = Range("I15") = 0
.Rows("46:46").Hidden = Range("I16") = 0
.Rows("47:47").Hidden = Range("I17") = 0
.Rows("48:48").Hidden = Range("I18") = 0
.Rows("58:59").Hidden = Range("I25") = 0
.Rows("60:61").Hidden = Range("I26") = 0
.Rows("62:65").Hidden = Range("I27") = 0
.Rows("66:67").Hidden = Range("I28") = 0
.Rows("68:69").Hidden = Range("I29") = 0
.Rows("70:71").Hidden = Range("I30") = 0
.Rows("72:73").Hidden = Range("I31") = 0
.Rows("74:75").Hidden = Range("I32") = 0
.Rows("76:79").Hidden = Range("I34") = 0
.Rows("80:83").Hidden = Range("I38") = 0
.Rows("84:85").Hidden = Range("I42") = 0
.Rows("86:87").Hidden = Range("I43") = 0
.Rows("88:89").Hidden = Range("I44") = 0
.Rows("90:91").Hidden = Range("I46") = 0
.Rows("92:93").Hidden = Range("I47") = 0
.Rows("94:95").Hidden = Range("I48") = 0
.Rows("96:97").Hidden = Range("I49") = 0
.Rows("98:99").Hidden = Range("I50") = 0
.Rows("100:101").Hidden = Range("I51") = 0
.Rows("102:103").Hidden = Range("I52") = 0
.Rows("104:105").Hidden = Range("I53") = 0
.Rows("106:107").Hidden = Range("I54") = 0
.Rows("108:109").Hidden = Range("I55") = 0
If Range("J129") = "OUI" Then
Sheets("offre").Rows("58:108").Hidden = True
Else: Sheets("offre").Rows("56:57").Hidden = True
End If
.Rows("112:114").Hidden = Range("I65") = 0
.Rows("115:116").Hidden = Range("I70") = 0
.Rows("117:118").Hidden = Range("I72") = 0
.Rows("119:120").Hidden = Range("I74") = 0
.Rows("121:122").Hidden = Range("I76") = 0
.Rows("123:124").Hidden = Range("I78") = 0
.Rows("125:126").Hidden = Range("I80") = 0
.Rows("127:128").Hidden = Range("I82") = 0
.Rows("129:130").Hidden = Range("I84") = 0
If Range("J130") = "OUI" Then
Sheets("offre").Rows("113:130").Hidden = True
Else: Sheets("offre").Rows("112:112").Hidden = True
End If
.Rows("135:140").Hidden = Range("I99") = 0
.Rows("141:144").Hidden = Range("I103") = 0
.Rows("145:146").Hidden = Range("I107") = 0
.Rows("147:148").Hidden = Range("I108") = 0
.Rows("149:150").Hidden = Range("I109") = 0
.Rows("151:152").Hidden = Range("I110") = 0
.Rows("153:154").Hidden = Range("I111") = 0
.Rows("155:156").Hidden = Range("I112") = 0
.Rows("157:158").Hidden = Range("I113") = 0
.Rows("159:160").Hidden = Range("I115") = 0
.Rows("161:164").Hidden = Range("I116") = 0
.Rows("165:166").Hidden = Range("I117") = 0
.Rows("167:168").Hidden = Range("I118") = 0
.Rows("169:170").Hidden = Range("I119") = 0
.Rows("171:172").Hidden = Range("I120") = 0
.Rows("173:174").Hidden = Range("I121") = 0
.Rows("175:176").Hidden = Range("I122") = 0
If Range("J131") = "OUI" Then
Sheets("offre").Rows("137:176").Hidden = True
Else: Sheets("offre").Rows("136:136").Hidden = True
End If
.Rows("180:189").Hidden = Range("B133") = 0
.Rows("190:196").Hidden = Range("B135") = 0
.Rows("197:198").Hidden = Range("B141") = 0
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Submerci par avance
Bonjour,
Ce code fonctionne bien ! C'est probablement qu'il n'est pas adapté à ton usage. (Worksheet_change ne réagit pas à un changement de valeur par formule ou encore l'évènement est intercepté par un .EnableEvents = False)...
A+
[Edit] ...ou encore peut-être le code n'est-il pas dans le bon module de feuille ?
bonjour
effectivement, les valeurs changent par formules, quelles solutions auriez vous à me proposer ?
Bonjour,
Pourquoi ne pas mettre le code dans un module plutôt que dans la feuille et le déclencher par un bouton
Si ok, remplacer la première ligne par SUB CACHER() puis mettre le code dans un module et lui associer un bouton.
Ensuite supprimer le code PRIVATE Worksheet.... se trouvant dans la feuille
De là, on peut éventuellement enlever ces instructions se trouvant en début et fin de code
With Application
.EnableEvents = False 'ou TRUE
.Calculation = xlCalculationManual 'ouxlCalculationautomatic
End WithAmicalement
Bonjour
pour répondre à Dan, j'ai trouvé une solution avec un code qui fonctionne, merci Dan pour le conseil !
Par contre, j'ai un problème sur l'exécution de mes codes :
sur une cellule, d'une feuille surlaquelle un code s'exécute, apparait #DIV alors est apparu un écran affichant le code VBA + une pop up me demandant d'arrêter le débogeur, j'ai cliqué sur ok et depuis plus rien, le code ne s'exécute pas. J'ai fermé le fichier et réouvert, toujours rien, là, je sèche !!!!!
merci pour votre aide
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour,
Tu as eu un bug en cours de macro,
avec
Application.EnableEvents = False relance un test avec
Application.EnableEvents = TrueAmicalement
Claude
bonjour
un grand merci pour la solution ! cela fonctionne maintenant !
amicalement
Christophe
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
