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 Sub

merci 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 With

Amicalement

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

Bonjour,

Tu as eu un bug en cours de macro,

avec

Application.EnableEvents = False 

relance un test avec

Application.EnableEvents = True

Amicalement

Claude

bonjour

un grand merci pour la solution ! cela fonctionne maintenant !

amicalement

Christophe

si tu repasse par là

a resolu3
Rechercher des sujets similaires à "problemes code vba"