Run-time error ‘1004’

Signaler
-
Messages postés
1402
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
13 septembre 2020
-
Bonjour,

j'ai un macro qui a été fait sur excel, quand je l'execute j'ai l'erreur 1004 (Run-time error ‘1004’:
Method ‘Range’ of object’_Worksheet’ failed)

Sub SwitchHorizontalTabs()
Dim SelCol As Long
Dim FirstRow As Long
SelCol = ActiveCell.Column
With Sheet1
.Range("5:84").EntireRow.Hidden = True
FirstRow = 5 + ((SelCol - 5) * 20)
.Range(FirstRow & "." & FirstRow + 19).EntireRow.Hidden = False
End With

End Sub

est ce que vous avez une idée

merci d'avance

2 réponses

Messages postés
12140
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 septembre 2020
683
bonjour, merci d'utiliser les balises de code, en choisissant "basic" pour du VBA: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

A quelle ligne de code obtiens-tu cette erreur?
Ton code est clairement incorrect.
que penses-tu obtenir en écrivant
Range("5:84")
?
et
Range(FirstRow & "." & FirstRow + 19)
?
Messages postés
1402
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
13 septembre 2020
141
Bonjour le fil, bonjour le forum,

Comme Yg_be je pensais que les erreurs dans ton code venaient des mêmes lignes qu'il a pointées mais je me suis rendu compte que c'est l'utilisation du CodeName : Sheet1 qui pose vraiment problème. Ton code modifié :
Sub SwitchHorizontalTabs()
Dim SelCol As Long
Dim FirstRow As Long

SelCol = ActiveCell.Column
With Worksheets("Sheet1")
    .Range("5:84").EntireRow.Hidden = True
    FirstRow = 5 + ((SelCol - 5) * 20)
    If FirstRow < 1 Then FirstRow = 1
    .Range(FirstRow & ":" & FirstRow + 19).EntireRow.Hidden = False
End With
End Sub

Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 463
Bonjour,

Pourquoi :
.Range("5:84").EntireRow.Hidden = True
????
Au lieu de :
.Rows("5:84").Hidden = True
!!!!

D'autre part ActiveCell est toujours sur ActiveSheet mais pas obligatoirement sur la feuille nommée (que ce soit par son nom ou par son CodeName)
Messages postés
1402
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
13 septembre 2020
141 >
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020

Re,

J'avoue que je ne pensais pas que Range("5:18").EntireRow.Hidden soit accepté mais apparemment ça fonctionne aussi, même si pour la clarté du code je lui préfère évidemment Rows("5:84").Hidden...