Fonctions IF Visual Basic

yannick64

XLDnaute Junior
Bonsoir à tous,

Je galère avec la fonction IF sous visual basic. Je voudrais masquer certaines lignes d'une feuille de calcul en fonction de la valeur "texte" que prend une cellule. Seulement les 2 premiers IF fonctionnent les autres n'ont aucune action. Je n'y comprend plus rien !!!

Voici à quoi ressemble mon code :
Code:
 Sheets("Evaluations").Select
Rows("12:613").EntireRow.Hidden = False
If Range("g8").Value = "Première période" Then Rows("62:143").EntireRow.Hidden = True

If Range("g8").Value = "Seconde période" Then Rows("45:61").EntireRow.Hidden = True
    Rows("74:143").EntireRow.Hidden = True

If Range("g8").Value = "Troisième période" Then Rows("45:73").EntireRow.Hidden = True
    Rows("86:143").EntireRow.Hidden = True

If Range("g8").Value = "Quatrième période" Then Rows("45:85").EntireRow.Hidden = True
    Rows("102:143").EntireRow.Hidden = True

If Range("g8").Value = "Cinquième période" Then Rows("45:101").EntireRow.Hidden = True
    Rows("123:143").EntireRow.Hidden = True

If Range("g8").Value = "Sixième période" Then Rows("45:122").EntireRow.Hidden = True

Pouvez vous me dire s'il y à une erreur la dedans???

Merci
Yannick
 

ROGER2327

XLDnaute Barbatruc
Re : Fonctions IF Visual Basic

Bonsoir yannick64.


Sans savoir ce que doit faire la procédure, un essai pifométrique :​
VB:
Sub toto()
    With Sheets("Evaluations")
        .Rows("12:613").EntireRow.Hidden = False
        Select Case Range("G8").Value
        Case "Première période": .Rows("62:143").EntireRow.Hidden = True
        Case "Seconde période": Union(.Rows("45:61"), .Rows("74:143")).EntireRow.Hidden = True
        Case "Troisième période": Union(.Rows("45:73"), .Rows("86:143")).EntireRow.Hidden = True
        Case "Quatrième période": Union(.Rows("45:85"), .Rows("102:143")).EntireRow.Hidden = True
        Case "Cinquième période": Union(.Rows("45:101"), .Rows("123:143")).EntireRow.Hidden = True
        Case "Sixième période": .Rows("45:122").EntireRow.Hidden = True
        End Select
    End With
End Sub
Bonne nuit.​


ROGER2327
#6674


Samedi 14 Gidouille 140 (Saint Colon, artilleur - fête Suprême Quarte)
10 Messidor An CCXXI, 9,3678h - faucille
2013-W26-5T22:28:58Z
 

eideal44

XLDnaute Junior
Re : Fonctions IF Visual Basic

Bonjour Yannick64,

Je l'aurais écris plutot de cette façon :

Code:
With Sheets("Evaluations")
        .Rows("12:613").EntireRow.Hidden = False
        If .Range("G8").Value = "Première période" Then
            .Rows("62:143").EntireRow.Hidden = True
        ElseIf .Range("G8").Value = "Seconde période" Then
            .Rows("45:61").EntireRow.Hidden = True
            .Rows("74:143").EntireRow.Hidden = True
        ElseIf .Range("G8").Value = "Troisième période" Then
            .Rows("45:73").EntireRow.Hidden = True
            .Rows("86:143").EntireRow.Hidden = True
        ElseIf .Range("G8").Value = "Quatrième période" Then
            .Rows("45:85").EntireRow.Hidden = True
            .Rows("102:143").EntireRow.Hidden = True
        ElseIf .Range("G8").Value = "Cinquième période" Then
            .Rows("45:101").EntireRow.Hidden = True
            .Rows("123:143").EntireRow.Hidden = True
        ElseIf .Range("G8").Value = "Sixième période" Then
            .Rows("45:122").EntireRow.Hidden = True
        End If
End With

le "With Sheets("Evaluations")" te permet de noter la feuille sur laquelle tu veux travailler sans la nommer sans arret, tu peux mettre l'écrire "with sheets("1")" et ensuite tu indiques avec le "." les lignes (".Rows") et cellules (".Range") qui appartiennent à la feuille

Le elseif, comme son nom l'indique, est une combinaison de if et de else. Comme l'expression else, il permet d'exécuter une instruction après un if dans le cas où le "premier" if est évalué comme faux.

Bonne soirée
 

ROGER2327

XLDnaute Barbatruc
Re : Fonctions IF Visual Basic

Suite...


Variantes :​
VB:
Sub toto1()
Dim plg As Range
    With Sheets("Evaluations")
        .Rows("12:613").EntireRow.Hidden = False
        Select Case Range("G8").Value
        Case "Première période": Set plg = .Rows("62:143")
        Case "Seconde période": Set plg = Union(.Rows("45:61"), .Rows("74:143"))
        Case "Troisième période": Set plg = Union(.Rows("45:73"), .Rows("86:143"))
        Case "Quatrième période": Set plg = Union(.Rows("45:85"), .Rows("102:143"))
        Case "Cinquième période": Set plg = Union(.Rows("45:101"), .Rows("123:143"))
        Case "Sixième période": Set plg = .Rows("45:122")
        End Select
    End With
    If Not plg Is Nothing Then plg.EntireRow.Hidden = True
    Set plg = Nothing
End Sub

Sub toto2()
    With Sheets("Evaluations")
        .Rows("12:613").EntireRow.Hidden = False
        If Range("G8").Value = "Première période" Then
            .Rows("62:143").EntireRow.Hidden = True
        ElseIf .Range("g8").Value = "Seconde période" Then
            Union(.Rows("45:61"), .Rows("74:143")).EntireRow.Hidden = True
        ElseIf .Range("g8").Value = "Troisième période" Then
            Union(.Rows("45:73"), .Rows("86:143")).EntireRow.Hidden = True
        ElseIf .Range("g8").Value = "Quatrième période" Then
            Union(.Rows("45:85"), .Rows("102:143")).EntireRow.Hidden = True
        ElseIf .Range("g8").Value = "Cinquième période" Then
            Union(.Rows("45:101"), .Rows("123:143")).EntireRow.Hidden = True
        ElseIf .Range("g8").Value = "Sixième période" Then
            .Rows("45:122").EntireRow.Hidden = True
        End If
    End With
End Sub

Sub toto3()
Dim plg As Range
    With Sheets("Evaluations")
        .Rows("12:613").EntireRow.Hidden = False
        If Range("G8").Value = "Première période" Then
            Set plg = .Rows("62:143")
        ElseIf .Range("g8").Value = "Seconde période" Then
            Set plg = Union(.Rows("45:61"), .Rows("74:143"))
        ElseIf .Range("g8").Value = "Troisième période" Then
            Set plg = Union(.Rows("45:73"), .Rows("86:143"))
        ElseIf .Range("g8").Value = "Quatrième période" Then
            Set plg = Union(.Rows("45:85"), .Rows("102:143"))
        ElseIf .Range("g8").Value = "Cinquième période" Then
            Set plg = Union(.Rows("45:101"), .Rows("123:143"))
        ElseIf .Range("g8").Value = "Sixième période" Then
            Set plg = .Rows("45:122")
        End If
    End With
    If Not plg Is Nothing Then plg.EntireRow.Hidden = True
    Set plg = Nothing
End Sub



ROGER2327
#6675


Samedi 14 Gidouille 140 (Saint Colon, artilleur - fête Suprême Quarte)
10 Messidor An CCXXI, 9,5209h - faucille
2013-W26-5T22:51:01Z
 

ROGER2327

XLDnaute Barbatruc
Re : Fonctions IF Visual Basic

...ou encore :


VB:
Sub toto0()
Dim plg As Range
    With Sheets("Evaluations")
        .Rows("12:613").EntireRow.Hidden = False
        .Rows("45:143").EntireRow.Hidden = True
        Select Case Range("G8").Value
        Case "Première période": Set plg = .Rows("45:61")
        Case "Seconde période": Set plg = .Rows("62:73")
        Case "Troisième période": Set plg = .Rows("74:85")
        Case "Quatrième période": Set plg = .Rows("86:101")
        Case "Cinquième période": Set plg = .Rows("102:122")
        Case "Sixième période": Set plg = .Rows("123:143")
        End Select
    End With
    If Not plg Is Nothing Then plg.EntireRow.Hidden = False
    Set plg = Nothing
End Sub



ROGER2327
#6676


Samedi 14 Gidouille 140 (Saint Colon, artilleur - fête Suprême Quarte)
10 Messidor An CCXXI, 9,6127h - faucille
2013-W26-5T23:04:14Z
 

Statistiques des forums

Discussions
312 502
Messages
2 089 046
Membres
104 010
dernier inscrit
Freba