Rechercher : dans
Par :

[VBA]erreur 1004 propriété hidden class range

Dernière réponse le 11 nov 2006 à 19:13:59 silverkeops, le 3 nov 2006 à 10:20:39 
 Signaler ce message aux modérateurs

Bonjour,

Je développe des macro en VB pour Excel et je ne parviens pas à résoudre mon problème.

Voici mon code :

Public Sub Afficher_Colonnes()

Range("AK14").Select 'on selectionne la première case de test

Do While ActiveCell.Value <> "FIN_TEST"

If ActiveCell.Value <> txt_colonne Then
ActiveCell.EntireColumn.Hidden = True

Else:
ActiveCell.EntireColumn.Hidden = False

End If

Selection.Offset(0, 1).Select 'on se déplace d'une case vers la droite pour continuer les tests

Loop

End Sub

L'éxécution s'arrete à le ligne "....hidden=true" avec le message d'erreur suivant :

Erreur d'exécution '1004':
Impossible de définir la propriété hidden de la classe range.

Ce qui est vraiment bizarre c'est que l'exécution ne s'arrête pas à la 1ère boucle mais après 30 ou 40 !

Merci d'avance por votre aide.

Kéo

Meilleures réponses pour « [VBA]erreur 1004 propriété hidden class range » dans :
Introduction à VBScript VoirPrésentation de VB Script VBScript (aussi appelé Visual Basic Scripting Edition) est un sous-ensemble du langage Visual Basic for Applications (VBA), un langage propriétaire de Microsoft prévu pour être intégré aux produits Microsoft Office©,...

1

Lupin.A, le 4 nov 2006 à 01:25:09

Bonjour ou Bonsoir,

suggestion :

Sub Afficher_Colonnes()

    Dim txt_colonne As String
    Dim Feuille As String, Cellule As String

    'Application.ScreenUpdating = False
    
    txt_colonne = "Résultat"

    Feuille = ActiveSheet.Name
    Cellule = ActiveCell.Address
    
    Sheets("Feuil1").Range("AK14").Select

    While (ActiveCell.Value <> "FIN_TEST")

        If (ActiveCell.Value <> txt_colonne) Then
            ActiveCell.EntireColumn.Hidden = True
        Else
            ActiveCell.EntireColumn.Hidden = False
        End If

        ActiveCell.Offset(0, 1).Select

    Wend
    Sheets(Feuille).Range(Cellule).Select

    'Application.ScreenUpdating = True


End Sub


plus la syntaxe est explicite et moins il y a d'erreur :-)

Lupin

Répondre à Lupin.A

2

silverkeops, le 6 nov 2006 à 10:02:05

Hélas la même erreur est générée dans le If, toujours au niveau du
"ActiveCell.EntireColumn.Hidden = True"...

Répondre à silverkeops

3

Kobaya, le 6 nov 2006 à 18:45:34

Bonsoir Kéo, Lupin,

n'y aurait-il pas des cellules protégées quelquepart ?

A+,
Kobaya.

Répondre à Kobaya

4

silverkeops, le 7 nov 2006 à 10:03:06

Bonjour kobaya,

Aucune cellule n'est protégée ni fusionnée.

J'ai essayé de faire un

Range("...").ColumnWidth = 0

à la place du Range("...").EntireColumn.Hidden = True

et l'erreur est exactement la même : "Erreur 1004 impossible de définir la propriété ColumnWidth de la classe Range...

Autre indice : quand je sélectionne un grand nombre de colonne (40 ou 50) et que je fais clic droit/masquer, il y a l'erreur "impossible de déplacer des objets en dehors de la feuille".
Je précise que cela fonctionne en sélectionnant moins de colonnes (environ 20-25).
Je vois donc une limitation du nombre, mais est-il possible de lever cette limitation et comment ?

Merci pour votre aide

Répondre à silverkeops

5

 Lupin.A, le 11 nov 2006 à 19:13:59

Bonjour,

Je vous suggère de trapper l'erreur. L'erreur 1004 signifie
qu'il y a débordemant de plage !

Sub Afficher_Colonnes()


    Dim txt_colonne As String
    Dim Feuille As String, Cellule As String

    On Error GoTo Err_Afficher
    
    'Application.ScreenUpdating = False
    
    txt_colonne = "Résultat"

    Feuille = ActiveSheet.Name
    Cellule = ActiveCell.Address
    
    Sheets("Feuil1").Range("AK14").Select

    While (ActiveCell.Value <> "FIN_TEST")

        If (ActiveCell.Value <> txt_colonne) Then
            ActiveCell.EntireColumn.Hidden = True
        Else
            ActiveCell.EntireColumn.Hidden = False
        End If

        ActiveCell.Offset(0, 1).Select

    Wend
    Sheets(Feuille).Range(Cellule).Select

    'Application.ScreenUpdating = True

Exit_Afficher:
    Exit Sub

Err_Afficher:
    MsgBox Err.Number & vbCrLf & Err.Description
    

End Sub



Placer un poinr d'arrêt à la ligne :

MsgBox Err.Number & vbCrLf & Err.Description

et valider le contenu des variables !

Lupin

Répondre à Lupin.A
Collection CommentÇaMarche.net