nommer le contenu d'un nombre de feuilles aléatoire [XL2013]

nommer le contenu d'un nombre de feuilles aléatoire [XL2013] - VB/VBA/VBS - Programmation

Marsh Posté le 27-10-2013 à 10:37:08    

Bonjour,
J'ouvre un fichier excel qui est alimenté en amont par une routine qui crée n onglets (feuilles) variable pouvant aller de 1 à 12 (et plus si affinités ;)).
Ces feuilles sont présentées sous forme de bdd.
Je voudrais pouvoir balayer chacune de ces feuilles, en sélectionner le contenu et créer (ou mettre à jour si ils existent déjà dans le cas d'une seconde ouverture) un nom pour ma sélection, nom qui soit le nom de l'onglet.
J'ai réalisé ce petit bout de code mais ça bloque en ligne 7 (f1.Range("A1" ).CurrentRegion.Select), Erreur d'éxécution '1004": La méthode Select de la classe Range a échoué.
J'ai pourtant utilisé ce même type d'instruction avec .value plutôt que .select avec succès.
Quelqu'un saurait-il me dire comment faire svp ?

Code :
  1. Sub defnomtableaux()
  2.   Application.ScreenUpdating = False
  3.  
  4.    For s = 1 To Sheets.Count - 2
  5.     Set f1 = Sheets(s)
  6.     tname = f1.Name
  7.     f1.Range("A1" ).CurrentRegion.Select
  8.    
  9.     Names.Add Name:=tname, RefersTo:="='" & tname & "'!" & Selection.Address
  10.    Next s
  11.    
  12. End Sub


Merci @ tous de toute votre aide
TF

Reply

Marsh Posté le 27-10-2013 à 10:37:08   

Reply

Marsh Posté le 27-10-2013 à 11:38:58    

 
           Bonjour,
 
           la sélection de cellule(s) s'effectue uniquement sur la feuille active ‼
           Voir l'exemple dans l'aide de la méthode  Select  …
 
           Ensuite inutile de sélectionner pour travailler avec des objets !
           Exemple dans ce sujet
 

Reply

Marsh Posté le 27-10-2013 à 11:58:56    

Bonjour Marc L,
 
Je m'en suis finalement sorti simplement en ajoutant une ligne d'instruction f1.select
Le code fonctionne très bien à présent comme ci-dessous

Code :
  1. Sub defnomtableaux()
  2.   Application.ScreenUpdating = False
  3.  
  4.    For s = 1 To 2
  5.     Set f1 = Sheets(s)
  6.     f1.Select
  7.     tname = f1.Name
  8.     f1.Range("A1" ).CurrentRegion.Select
  9.     f1.Names.Add Name:=tname, RefersTo:="='" & tname & "'!" & Selection.Address
  10.    Next s
  11.    
  12. End Sub


Par contre, il me reste un point génant si mes noms d'onglets contiennent des caractères spéciaux ou des espaces.
Quelle astuce appliquer pour que cela soit opérationnel ques que soient les noms qui ont été attribués lors de la génération des feuilles ?
Merci de votre aide,
TF

Reply

Marsh Posté le 27-10-2013 à 12:06:16    

Travaille sur le numéro d'onglet?

Reply

Marsh Posté le 27-10-2013 à 12:14:18    

MaybeEijOrNot a écrit :

Travaille sur le numéro d'onglet?


 
Oui !
Cela permet de travailler sur une liste d'onglets "entre bornes" sans en connaitre le nom.
Dans le premier code, sur tous les onglets sauf les deux derniers
Dans le second code, seulement sur les deux premiers onglets,
etc...

Reply

Marsh Posté le 27-10-2013 à 12:52:55    

Je ne sais pas comment prendre ton message, je te faisais une proposition, au lieu de récupérer le nom de ta feuille puis nommer ta sélection en fonction, nommes directement ta sélection en fonction du numéro d'onglet.

Reply

Marsh Posté le 28-10-2013 à 12:38:47    

 
           Et de toute manière un bon code ne travaille pas à coup de  Select  ! …
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed