Ligne incorrect, mais ou?

Résolu
Ctesias Messages postés 786 Statut Membre -  
Ctesias Messages postés 786 Statut Membre -
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. sirefalas Messages postés 260 Statut Membre 8
     
    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
    0
  2. Ctesias Messages postés 786 Statut Membre 36
     
    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 "=".
    0
  3. sirefalas Messages postés 260 Statut Membre 8
     
    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
    0
    1. sirefalas Messages postés 260 Statut Membre 8
       
      EDIT: je viens de faire quelques recherches, regarde du coté de la fonction IsNull
      0
    2. Ctesias Messages postés 786 Statut Membre 36
       
      J'ai bien essayé avec la fonction isnull:

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

      mais rien ne se produit...
      0
  4. Ctesias Messages postés 786 Statut Membre 36
     
    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...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sirefalas Messages postés 260 Statut Membre 8
     
    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
    0
  7. Ctesias Messages postés 786 Statut Membre 36
     
    Bienvenu au club ;)

    C'est quand meme bizarre, parce que la, je commence a avoir l'impression qu'il detecte pas les cellules vides...
    0
  8. sirefalas Messages postés 260 Statut Membre 8
     
    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?
    0
  9. Ctesias Messages postés 786 Statut Membre 36
     
    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?
    0
  10. sirefalas Messages postés 260 Statut Membre 8
     
    ç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
    0
  11. Ctesias Messages postés 786 Statut Membre 36
     
    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...
    0
    1. sirefalas Messages postés 260 Statut Membre 8
       
      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
      0
    2. Ctesias Messages postés 786 Statut Membre 36
       
      je suis pas un super fan du pas a pas, je ne comprend pas comment il fonctionne
      0
  12. Ctesias Messages postés 786 Statut Membre 36
     
    Après plusieurs essai: il ne rentre pas dans le IF...
    0
  13. sirefalas Messages postés 260 Statut Membre 8
     
    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
    0
  14. Ctesias Messages postés 786 Statut Membre 36
     
    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
    0
  15. Ctesias Messages postés 786 Statut Membre 36
     
    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...
    0
  16. sirefalas Messages postés 260 Statut Membre 8
     
    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
    0
  17. Ctesias Messages postés 786 Statut Membre 36
     
    Humm... il me semble qu'une valeur precise de i marche.
    0
  18. sirefalas Messages postés 260 Statut Membre 8
     
    alors tu as trouvé quelle était l'erreur?
    0
  19. Ctesias Messages postés 786 Statut Membre 36
     
    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 =)
    0
  20. sirefalas Messages postés 260 Statut Membre 8
     
    LOL, je pouvais vouloir t'aider autant que je veux j'étais pas rendu XD
    0
  21. Ctesias Messages postés 786 Statut Membre 36
     
    oui, desole xD
    0