Ligne incorrect, mais ou?

Résolu
Bonjour,

VOila, je viens a vous pour vous demander votre aide. Je ne comprend pas ou ai-je fait une erreur dans le code suivant :

Sub present()

Dim i As Integer
Dim j As Integer

For i = 16 To 152 Step 8
j = i + 7
If Sheets("relevé").Cells(i, 2).Text = "" Then
Rows(i & ":" & j).Select
Selection.EntireRow.Hidden = True
End If
Next
End Sub


Il ne veux pas me masquer les colonnes. j'ai fiat plusieur test, et apparement, il ne comprend pas cette ligne la:

If Sheets("relevé").Cells(i, 2).Text = "" Then

Quelqu'un saurait pourquoi? :s

Merci d'avance,

Ctesias

20 réponses

  1. LOL, je pouvais vouloir t'aider autant que je veux j'étais pas rendu XD
    1. oui, mais j'ai honte de dire l'erreur que j'ai faite... une erreur toute bete...

      le code est celui la :

      Sub present()

      Dim i As Integer
      Dim j As Integer
      Dim k As Integer

      k = 16
      For i = 5 To 22
      If Sheets("personnels").Cells(i, 2).Value = "NON" Then
      j = k + 7
      Sheets("relevé").Rows(k & ":" & j).Select
      Selection.EntireRow.Hidden = True
      End If
      k = k + 8
      Next

      End Sub

      Mais l'erreur etait For i = 4 To 22 au lieu de For i = 5 To 22 ...

      LA HONTE xD

      Merci quand meme =)
      1. Bon au moins on sait ou est le souci, c'est ton If qui déconne, continuons à isoler petit à petit pour essayer de trouver l'erreur.
        Il faut donc tester séparément le nom de la feuille (en mettre une autre qui existe) et tenter avec une valeur précise pour i.
        Finalement, tester ces deux choses en même temps si il y a toujours souci
        1. j'ai changé le code, ca marche mieux, masi pas completement:

          Sub present()

          Dim i As Integer
          Dim j As Integer
          Dim k As Integer

          k = 16
          For i = 4 To 22
          If Sheets("personnels").Cells(i, 2).Value = "NON" Then
          j = k + 7
          Sheets("relevé").Rows(k & ":" & j).Select
          Selection.EntireRow.Hidden = True
          End If
          k = k + 8
          Next

          End Sub

          le problème, c'est qu'il me reste à la fin, un oui, non, non...
          1. oui je suis sur du nom ;), et non, je prefere pas changer le nom, parce que sinon, je dois rechanger loes formules d'une quinzaine de feuille :s
            1. question con, tu es sur du nom de la feuille où tu fais tes tests? Essaye un nom sans accents aussi, des fois ça peut faire bugger
              1. ta macro dans un autre classeur fonctionne.. Cela doit venir des formules alors.

                Le truc, c'est que mes formules sont sencés afficher une valeur d'une autre feuille...
                1. tu as essayé d'avancer en pas à pas dans ta macro? tu vas peut être voir où ça coince et pourquoi ça ne rentre pas dans ton If
                2. je suis pas un super fan du pas a pas, je ne comprend pas comment il fonctionne
              2. ça peut venir de la, réessaye de ton coté en ouvrant un nouveau classeur et en copiant le If que j'ai fait.
                Après ce que je voulais dire pour savoir ou tu écrivais ta macro, c'était plutot si tu l'écrivait dans une feuille du document ou dans Thisworkbook.
                J'ai testé en écrivant dans ThisWorkBook, je vais tester dans une feuille la
                EDIT: ça change rien la page ou est écrite la macro
                1. Euh, dans un module. Ca peut influer?

                  Et pour moi If Sheets("Feuil1").Cells(2, 2).Value = "" Then
                  ne marche pas, j'avais deja essayé. Alors est-ce que ca viens de mes cellules ou il y a des formules mathématique dedans?
                  1. J'ai trouvé! j'ai mis le temps mais j'ai trouvé.

                    dans ton premier post, tu mets:
                    If Sheets("relevé").Cells(i, 2).Text = "" Then

                    Or je viens de tester avec un cas en dur, il faut mettre Value à la place de Text et ça fonctionne. Précisément, en test j'ai écrit dans un classeur vide:

                    If Sheets("Feuil1").Cells(2, 2).Value = "" Then
                    MsgBox "dommage"
                    End If

                    Et ça a fonctionné. Par contre question existentielle et dont je ne suis pas sur que ça ait de l'influence, ta macro du l'écrit ou? je veux dire dans quelle feuille?
                    1. Bienvenu au club ;)

                      C'est quand meme bizarre, parce que la, je commence a avoir l'impression qu'il detecte pas les cellules vides...
                      1. C'est étonnant qu'avec IsNull ça marche pas... la je dois te dire que si cette fonction marche pas je sèche un peu
                        1. ba j'ai utilisé un .value aussi, mais ca ne marche pas.

                          If !(Sheets("relevé").Cells(i, 2).Text) Then ne marche pas, il me dis avec des crochets :
                          If ![Sheets("relevé").Cells(i, 2).Text] Then
                          Mais une erreur apparait:

                          "Erreur de compilation: reference incorrct ou non qualifié"

                          Que pasa? ^^'

                          je ne comprend pas la...
                          1. Je suis pas sur mais c'est peut être ton .Text qui gène.

                            Maintenant à ta place je mettrais une vérification d'existence plutot que =""
                            J'ai plus le nom en tête mais pour faire une comparaison avec le C, ça donnerait dans le genre

                            If !(Sheets("relevé").Cells(i, 2).Text) Then
                            1. EDIT: je viens de faire quelques recherches, regarde du coté de la fonction IsNull
                            2. J'ai bien essayé avec la fonction isnull:

                              If IsNull(Sheets("relevé").Cells(i, 2).Value) Then

                              mais rien ne se produit...
                          2. j'ai bien tester, c'est comme en C, le probème, c'ets qu'il me met: "erreur de compilation: expression attendue" et me surligne le deuxieme "=".
                            1. tout simplement que pour effectuer un test il faut un double égal (==)
                              Le simple égal est une attribution de variable, donc normal qu'il comprenne pas en fait :)
                              Pour lui tu fais aucune opération dans ton If, juste une attribution

                              If Sheets("relevé").Cells(i, 2).Text == "" Then