Erreur Range().select

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Je joins un bout de fichier que j'ai tronqué
Le Pb est en module 1 , Sub Init , le range("C5:l22").select provoque une erreur 1004
Je mets cette Sub seule dans un nouveau fichier : elle fonctionne ?

autre question : le sheets.count me met 18 ?? ; je n'ai plus que 3 feuilles après les suppressions
A l'origine j'en avais 53, explication ?
merci
 

Pièces jointes

  • T_Abs.xlsm
    70.4 KB · Affichages: 23

Yurperqod

XLDnaute Occasionnel
Bonjour à tous

Il y a plein de feuilles qui sont masquées dans le classeur.
En ajoutant ce test, pas d'erreur ici
VB:
Private Sub init_Click()
Dim k As Long
For k = 1 To Sheets.Count - 1
If Not Worksheets(k).Visible Then
Worksheets(k).Visible = -1
With Worksheets(k).Range("C5:L22").Interior
  .Pattern = xlNone
  .TintAndShade = 0
  .PatternTintAndShade = 0
End With
End If
Next k
End Sub
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir , merci de ta réponse
Bon, j'ai encore fouiné pour comprendre et normalement la macro de mon fichier ne PEUT pas fonctionner car d'après ce que j'ai pu relever :
Dans ce cas le VBA (range.select) ne peut pas s'executer en dehors d'une feuille non selectionnée
déjà en ecrivant le "." select , la liste intuitive n'apparait pas si précédé de "worksheets(k). range" ,c'est pas bon signe !! ; donc la méthode est :
worksheets(k).select
range("C5:L22").select
Si on regroupe ces 2 instructions en 1 seule : worksheets(k).range("C5:L22").select ;
l'exécution est simultanée donc conflit !
Pour parfaire et être sûr , j'ai retesté en supprimant le worksheets(k).select : le code ne s'exécute que sur la feuille que vous avez activé en dernier .. logique !
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Vous avez Application.GoTo Worksheets(k).Range("C5:L22") qui devrait le faire.
…si vous avez absolue nécessité de sélectionner ça à l'intention de l'utilisateur, plutôt que de l'affecter par un Set à une variable As Range à utiliser ultérieurement dans la procédure. (je n'ai pas ouvert le classeur pour voir de quoi il retourne).
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Écrite comme ça votre procédure ne plante plus :
VB:
Private Sub init_Click()
For k = 1 To Worksheets.Count - 1
   With Worksheets(k).Range("C5:L22").Interior
      .Pattern = xlNone
      .TintAndShade = 0
      .PatternTintAndShade = 0
      End With: Next k
End Sub
C'est d'ailleurs très proche de ce que proposait Yurperqod.
 

Si...

XLDnaute Barbatruc
Bon_jour

Réponse éditée et corrigée !
Quelle idée ai-je eu de m'embarquer dans une telle galère ?
Suppression de la suite de ma réponse qui n'a présentée aucun intérêt aux yeux du demandeur.

Ce n'est pas de ce texte dont fait allusion eriiic ;) !
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

Tu devrais te pencher de plus près sur la 1ère phrase de Ce lien n'existe plus
Il y a plein de feuilles qui sont masquées dans le classeur.
Tes feuilles annoncées comme supprimées ne le sont pas et sont simplement masquées. Régle ce problème, ou tiens en compte dans ton code.
Et tu as l'air de vouloir t'obstiner à faire des .Select inutiles. Regarde les réponses, aucune n'en fait.
Un .Select (ainsi que d'autres actions) sur une feuille masquée plante, c'est normal.
eric

edit : j'ai dû valider mon post avec retard (interrompu), désolé pour la redite avec le post de Si...
 

herve62

XLDnaute Barbatruc
Supporter XLD
En fait dans mon fichier d'origine avec ses 52 onglets de Sxx je viens de m'apercevoir qu'il y avait aussi des onglets masqués , je ne sais pas d'où cela provient ? car déjà ces feuilles vierges ne devraient pas exister !!
J'ai remis de l'ordre , recopié la macro enregistrée ( avec select eh oui c'est M Krosoft qui les met !)
et ça fonctionne bien
Je vais remettre le fichier corrigé en service sur le serveur ( en mode partagé) et suivre si des onglets sont créés
 

Pièces jointes

  • T_Abs.xlsm
    54.7 KB · Affichages: 21

Roland_M

XLDnaute Barbatruc
bonjour à tous,

ceci ne cause pas d'erreur !
mais je ne sais pas trop ce que tu souhaites faire !?
en l'état l'exécution s'effectue sur toutes les feuilles !

Private Sub init_Click()
'An = Year(Date) + 1
For k = 1 To Sheets.Count - 1
With Worksheets(k)
.Visible = True
.Unprotect
.Select
'.Range("B1").Value = An
.Range("C5:L22").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.Range("M5").Select
End With
Next k
End Sub
 
Dernière édition:

Yurperqod

XLDnaute Occasionnel
Bonjour à tous

Cette macro marche aussi sans Select et supprime le format en une seule fois.
VB:
Sub init_Click()
Dim k As Long
For k = 1 To Worksheets.Count
Worksheets(k).Visible = -1
Worksheets(k).Range("C5:L22").ClearFormats
Next k
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 902
Membres
101 834
dernier inscrit
Jeremy06510