Cacher plusieurs ligne dans excel avec VB6

[Résolu]
Signaler
Messages postés
17
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2010
-
Messages postés
17
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2010
-
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" /??>

5 réponses

Messages postés
17
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2010

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"

Quelqu'un pourrait m'aider?


 
Messages postés
1
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
3 mars 2009

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

End Sub


 
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Bonsoir,

tes "Cell" ne doivent pas être des Cell, mais des Cells

et supprime donc Dim Cell As Range<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

  (qui ne sert plus)
Range est un objet.et donc Cell si déclaré comme plage
 Cells(1,2) n'en est pas un ...
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
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 ...
Messages postés
17
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2010

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" /??>