cs_FlyingAlex
Messages postés17Date d'inscriptionmardi 3 mars 2009StatutMembreDernière intervention25 novembre 2010
-
3 mars 2009 à 17:29
cs_FlyingAlex
Messages postés17Date d'inscriptionmardi 3 mars 2009StatutMembreDernière intervention25 novembre 2010
-
4 mars 2009 à 14:09
Bonjour a tous.
Je cherche comment faire en sorte de cacher une ligne si la valeur de deux cellules sur Excel sont négatives. Apres avoir fais quelques recherches, je suis arrive a trouver le code pour une ligne :
Sub MasqueLigne()If Range("F3").Value < 0 And Range("I3").Value < 0 Then Rows("3:3").EntireRow.Hidden True Else: Rows("3:3").EntireRow.Hidden False
End Sub
Mais j'ai besoin de l'adapter pour plus de 400 lignes, et je ne me vois pas faire 400 copier coller en changeant F3 par F4 etc...
Je ne trouve pas comment faire en sorte qu'il fasse pareil pour chaque ligne, la ligne a cacher correspondant a celle ou est la cellule. Je pensais a une boucle, mais je ne suis pas arrive a l'adapter pour des cellules.
Merci de votre aide, et si il manque quelque chose, n'hésitez pas a me le dire, c'est mon premier post.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
cs_FlyingAlex
Messages postés17Date d'inscriptionmardi 3 mars 2009StatutMembreDernière intervention25 novembre 2010 3 mars 2009 à 21:03
Alors ça a avancé pour moi, j'ai totalement changé le code :
Sub Tris()
Dim x As IntegerDim Cell As Range<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
For x = 3 To 20
If Cell(x, 6) < 0 Then
If Cell(x, 9) < 0 Then
Rows("x:x").EntireRow.Hidden = True
Else: Rows("x:x").EntireRow.Hidden = False
End If
End If
Next x
End Sub
Le problème est que maintenant, il me fais une erreur 91 "Object variable or With block variable not set"
dmnqxl
Messages postés1Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 3 mars 2009 3 mars 2009 à 23:13
Bonsoir,
Visiblement, vous vouliez faire appel à Cells(x,y) et non à un Cell déclaré comme Range.
De même, il me semble que Rows désigne une collection d'objets mais ne peut être utilisé comme vous l'avez fait.
Voici le code remanié que je propose (vous pouvez bien sûr modifier la définition de la plage "Plage" comme vous le souhaitez):
Sub Tris2()
Dim x As Integer
Dim Plage As Range
Dim Row As Object
Set Plage = Range("A3:J20")
For Each Row In Plage.Rows
If Row.Cells(6) < 0 And Row.Cells(9) < 0 Then
Row.EntireRow.Hidden = True
Else
Row.EntireRow.Hidden = False
End If
Next Row
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 3 mars 2009 à 23:23
Et- je me suis fait avoir (dois être fatigué !...)
Je n'aurais pas répondu si j'avais vu (comme je le vois maintenant) que tu avais "posté" ta question VBA dans Thèmes / Visual Basic 6 !!!
Tu as eu ta réponse, mais fais attention au choix du thème, dorénavant, s'il te plait ... hein ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_FlyingAlex
Messages postés17Date d'inscriptionmardi 3 mars 2009StatutMembreDernière intervention25 novembre 2010 4 mars 2009 à 14:09
Merci de vos réponses et désolé pour l'avoir mis au mauvais endroit, je ne voyais pas ou le mettre d'autre.
Tout marche pour le mieux.
Bonne journée a vous.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>