Masquer des colonnes qui bug dans une boucle

Résolu
Bonjour,

Je rencontre un problème, j'ai une boucle avec ce code :

Range("M:M,O:O,R:V,AA:AG,AK:AK").EntireColumn.Hidden = True

Ce code fonctionne très bien

Mais si je récupère des lien hypertexte dans une colonne "N" celui ci bug.

Je n'arrive pas à comprendre pourquoi ?

Merci pour votre aide.

Pascal

8 réponses

  1. Contributeur
    bonsoir, tu veux dire que la ligne de code que tu montres ne te donne plus le résultat attendu (lequel?), ou donne un message d'erreur (lequel?) quand tu modifies le reste du code (lequel?)?
    0
    1. Bonsoir yg_be,

      Oui j'ai un message d'erreur d'exec 1004 la méthode range de l'objet global a échoué.

      J'ai essayé de passer par un module et c'est pareil.

      Merci pour ton aide.

      Bonne soirée.

      Pascal
      0
      1. Contributeur
        peux-tu expliquer ce qui fait que cela marche parfois et parfois pas? que changes-tu entre les deux fois?
        tu ne montres qu'une seule ligne de code. je ne peux faire de suggestion qu'à ce propos:
        je te suggère donc de préciser de quelle feuille il s'agit, par exemple:
        dim unefeuille as worksheet
        set unefeuille  = 'ceci ou cela
        unefeuille.Range("M:M,O:O,R:V,AA:AG,AK:AK").EntireColumn.Hidden = True

        il est toujours dangereux de ne pas préciser exactement les objets, d'autant plus dangereux quand le code VBA utilise des
        Select 
        ou autre
        Activate
        , absolument à proscrire.
        0
    2. c'est depuis que je récupère des liens hypertexte dans la colonne "N"n°14.

      Je joins le lien du fichier.

      Merci.

      https://www.cjoint.com/c/GKqsnUoUPvX
      0
      1. Contributeur
        tu ne m'expliques ni comment utiliser ton fichier pour avoir le problème, ni ce que tu as changé et qui fait que cela ne fonctionne plus.
        je maintiens ma suggestion: remplacer ta ligne par quelque-chose comme
        Sheets("Données commerciales").Range("M:M,O:O,R:V,AA:AG,AK:AK").EntireColumn.Hidden = True

        ou
        Worksheets(I).Range("M:M,O:O,R:V,AA:AG,AK:AK").EntireColumn.Hidden = True

        pour éviter d'avoir Range tout seul, sans préciser où.
        je suggère aussi de simplifier ton code, par exemple remplacer ceci
         Sheets("Données commerciales").Select
            Range("C6:C11").Select
            Selection.Copy
            
            ActiveWorkbook.Worksheets(I).Select
            Range("C6").Select
            ActiveSheet.Paste

        par cela
         Sheets("Données commerciales").Range("C6:C11").Copy Worksheets(I).Range("C6")
        0
    3. ça ne fonctionne plus depuis que je récupère par une requête les lien hypertexte et que je fais le module1.

      je fais ce code sur toutes les feuilles sauf la dernière ("Données commerciales").

      j'ai essayé Worksheets(I).Range("M:M,O:O,R:V,AA:AG,AK:AK").EntireColumn.Hidden = True

      et j'ai un message d'erreur d'éxecution 1004 erreur définie par l'application ou par l'objet.

      Pour info je clique sur le rectangle bleu en haut de la page PM Tarif_T3.
      0
      1. j'ai changé tous les codes de

        Sheets("Données commerciales").Range("C6:C11").Copy Worksheets(I).Range("C6")

        mais j'ai toujours le message.

        J'ai mis une seule colonne et ça fonctionne ?

        Worksheets(I).Range("AK:AK").EntireColumn.Hidden = True
        0
        1. Contributeur
          ton code est trop compliqué, je laisse d'autres t'assister.
          0
      2. je te remercie pour avoir pris du temps pour moi.

        Bonne soirée.

        Pascal
        0
        1. j'ai mis cela et ça fonctionne :

          Worksheets(I).Range("M:M").EntireColumn.Hidden = True
          Worksheets(I).Range("O:O").EntireColumn.Hidden = True
          Worksheets(I).Range("R:R").EntireColumn.Hidden = True
          Worksheets(I).Range("S:S").EntireColumn.Hidden = True
          Worksheets(I).Range("T:T").EntireColumn.Hidden = True
          Worksheets(I).Range("U:U").EntireColumn.Hidden = True
          Worksheets(I).Range("V:V").EntireColumn.Hidden = True
          Worksheets(I).Range("AA:AA").EntireColumn.Hidden = True
          Worksheets(I).Range("AB:AB").EntireColumn.Hidden = True
          Worksheets(I).Range("AC:AC").EntireColumn.Hidden = True
          Worksheets(I).Range("AD:AD").EntireColumn.Hidden = True
          Worksheets(I).Range("AE:AE").EntireColumn.Hidden = True
          Worksheets(I).Range("AF:AF").EntireColumn.Hidden = True
          Worksheets(I).Range("AG:AG").EntireColumn.Hidden = True
          Worksheets(I).Range("AK:AK").EntireColumn.Hidden = True

          alors que cela ne fonctionne pas, , je ne comprends rien mais bon j'ai masqué mes colonnes.

          Worksheets(I).Range("M:M,O:O,R:V,AA:AG,AK:AK").EntireColumn.Hidden = True
          0
          1. Contributeur
            bien vu!
            0
        2. Je remercie yg_be et Le Pivert, vous m'avez fait faire un grand bon en avant avec votre aide.

          Bonne journée.

          Pascal
          0