XL 2013 Nom onglet = Valeur cellule

YANOU38

XLDnaute Occasionnel
Bonjour à tous et merci pour votre aide,

Sur ma Feuille"3" :
- en cellule J1, la formule =FEUILLE()
- la macro ci-dessous pour que ma Feuille prenne le nom de la Cellule J1 :
VB:
Sub TabName()
    ActiveSheet.Name = ActiveSheet.Range("J1")
End Sub

Mes questions :
- J'ai une Feuille masquée (je peux en avoir d'autres) et du coup le nom de ma Feuille "3" devrait être "2" (si nous comptons uniquement les Feuilles "visibles"). Comment remédier à ce problème ?
- Comment faire pour lancer automatiquement la macro au changement de la valeur de la Cellule J1.

Merci pour votre aide
 

Pièces jointes

  • Classeur3.xlsm
    23.6 KB · Affichages: 11

vgendron

XLDnaute Barbatruc
Bonjour

Déjà, je trouve bizarre de vouloir changer le nom des feuilles selon que des feuilles soient masquées ou pas.. mais bon.. soit....

VB:
Sub RenameFeuilles()

cpt = 1
For Each ws In ActiveWorkbook.Sheets
    If ws.Visible Then
        ws.Name = cpt
        cpt = cpt + 1
    End If
Next ws
End Sub

mais.... il va forcément arriver le cas où tu essaies de renommer une feuille avec un nom qui existe déjà....
et la...???
 

YANOU38

XLDnaute Occasionnel
Bonjour vgendron et merci pour ton aide.
Pour éviter que l'on se retrouve avec des noms qui existe déjà, j'étais parti sur une macro propre à chaque feuille venant prendre la valeur de la cellule J1 qui est généré par =FEUILLE() qui ne trouvera jamais de doublon en face.
Dans l'idée, il faudrait que ma cellule J1 soit =FEUILLE()-NOMBRE FEUILLES MASQUÉES.
Merci pour ton aide.
 

YANOU38

XLDnaute Occasionnel
Re-bonjour,
Après modification de mon classeur, mes Cellules J1 des Feuilles 8 et 9 ont le numéro de leur position Feuilles visibles (4 et 5).
Si on ajoute ou supprime (Afficher / Masquer) des Feuilles avec les cases à cocher de la Feuille PG1, la valeur des cellules J1 suit.
J'ai tenté une modification de la macro de départ pour que le nom de la Feuille change en même temps que J1, mais sans connaissance VBA :oops:
Code:
Sub TabName()
ActiveSheet.Name = ActiveSheet.Range("J1")
End Sub
Merci pour votre aide
 

Pièces jointes

  • Classeur 4.xlsm
    136.2 KB · Affichages: 5

Phil69970

XLDnaute Barbatruc
Bonjour @YANOU38 , @vgendron

Perso je suis du même avis que @vgendron c'est source de problème potentiel
Déjà, je trouve bizarre de vouloir changer le nom des feuilles selon que des feuilles soient masquées ou pas..

Et pour ma gouverne à quoi cela te sert de renommer les onglets en fonction des onglets affichés.
Si tu nous expliquais ta logique nous pourrons peut être te proposer une autre solution moins ... bizarre....

*Tu devrais aussi t'interroger pourquoi après 64 vues tu n'as eu que 1 réponse ==> le coté incompris de la finalité de ta demande explique peut être cela ?

Merci de ta réponse

@Phil69970
 

Dranreb

XLDnaute Barbatruc
Bonsoir
En plus la fonction FEUILLE renvoie le numéro d'ordre de l'onglet, pas son nom, et il n'est pas impacté par le masquage des feuilles qui le précède, donc ça ne servirait à rien de changer leurs noms.
Maintenant il serait possible d'enregistrer dans chaque feuille un nom valant le numéro d'ordre d'onglet visible si c'était ça qui vous intéresserait.
Avec ça dans le module ThisWorkbook par exemple :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
   Dim Obj As Object, NOngVis As Integer
   Set Obj = Me.Sheets(1)
   Do
      If Obj.Visible = xlSheetVisible Then NOngVis = NOngVis + 1
      If Obj.Index = Sh.Index Then Exit Do
      Set Obj = Obj.Next: Loop
   Sh.Names.Add "NOngVis", NOngVis
   End Sub
Mais je suis d'accord avec mes camarades, ce serait casse gueule de renommer les feuilles.
 
Dernière édition:

YANOU38

XLDnaute Occasionnel
Bonjour vgendron, Phil69970, Dranreb, bonjour à tous et Merci pour votre aide.

Mon classeur est destiné à plusieurs interlocuteurs comme un livre de bord :
1ière Personne : Classeur contenant => PG1 + Crog.1 + Les onglets numériques (3 à 10)
2ième Personne : PG1 + PG2 + Croq.2 + Croq.3 + Les onglets numériques (5 à 12)
3iéme Personnes : PG1 + PG2 + PG3 + Croq.2 + Croq.3 + Croq.4 + Les onglets numériques (7 à 14)
...

Mon classeur contient au début uniquement les onglets PG1-PG2 jusqu'à Croq.10 .
J'importe tous les autres onglets numériques à partir d'une bibliothèque.
Dans mon exemple, j'ai 8 onglets numériques. Ils sont identiques pour les 3 personnes, mais en fonction des onglets Affichés / Masqués avant (cases à cocher sur PG1), ils prennent le nom de leur position (3 à 10 ou 5 à 12 ou 7 à 14...).
L'Affichage / Masquage ne suit aucune logique systématique (programmable).

Il se peut que j'ai besoin d'intervertir un onglet numérique (l'onglet 15 passe à 20) et tous mes onglets renommés en fonction.

Les cellules J1 de tous mes onglets numériques prennent la bonne valeur, après je ne maîtrise pas le VBA pour que chaque onglet récupère automatiquement cette valeur.

Par ailleurs, j'ai cherché un moyen d'importer mes Onglets numériques plus facilement.
On trouve un Userform1 sur mes classeurs, mais l'idée en est restée là... :

- Clic sur "IMPORT" => Ouverture Explorateur à l'emplacement Z:\DEPT CHAUDRONNERIE\Divers documents techniques\4 - Soudage\DMOS puis choix d'un classeur (1 classeur = 1 onglet) et ouverture de ce classeur.

- "Ajouter page" uniquement une info

- "OUI" si le choix du classeur convient => Copier / Coller onglet sur mon classeur, fermeture du classeur bibliothèque.

- "NON" le classeur ne convient pas, fermeture, explorateur, choix, ouverture classeur... (boucle jusqu'à "OUI").

Voilà, j'espère avoir été plus clair, moins "Bizarre"...
Merci encore à vous.
 

Pièces jointes

  • 1ière personne.xlsm
    166.7 KB · Affichages: 1
  • 2ième personne.xlsm
    166.7 KB · Affichages: 0
  • 3ième personne.xlsm
    167.1 KB · Affichages: 1

Dranreb

XLDnaute Barbatruc
Mais pourquoi la position après celle du dernier onglet visible ne portant pas cette position comme nom, c'est ça que je ne comprends pas.
Néanmoins cette procédure le ferait s'il y a au moins une feuille au nom numérique :
VB:
Sub NuméroterFeuilles()
   Dim Obj As Object, NbCachés As Integer, P0 As Integer, P As Integer
   Set Obj = ThisWorkbook.Sheets(1)
   Do While Not IsNumeric(Obj.Name)
      If Obj.Visible <> xlSheetVisible Then NbCachés = NbCachés + 1
      Set Obj = Obj.Next: If Obj Is Nothing Then Exit Sub
      Loop
   P0 = Obj.Index
   For P = P0 To ThisWorkbook.Sheets.Count
      ThisWorkbook.Sheets(P).Name = "NomTemp" & P
      Next P
   For P = P0 To ThisWorkbook.Sheets.Count
      ThisWorkbook.Sheets(P).Name = CStr(P - NbCachés)
      Next P
   End Sub
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour à tous

1ière Personne : Classeur contenant => PG1 + Crog.1 + Les onglets numériques (3 à 10)
2ième Personne : PG1 + PG2 + Croq.2 + Croq.3 + Les onglets numériques (5 à 12)
3iéme Personnes : PG1 + PG2 + PG3 + Croq.2 + Croq.3 + Croq.4 + Les onglets numériques (7 à 14)

j'ai 8 onglets numériques. Ils sont identiques pour les 3 personnes
Je rejoins Bernard, si ce sont les mêmes pour tout le monde pourquoi leur en donner des noms différents (3 à 10, 5 à 12, 7 à 14) qui sont renommer à la volée ?
Et si ils sont différents ....alors pourquoi faire croire.....que c'est les mêmes ?
Je pense que tu prends le problème à l'envers.
Il faudrait mieux faire une gestion des personnes plutôt que l'usine à gaz en gestation ....🤪

Exemple :

Dans un onglet paramètre (peu importe son nom) tu gères les droits des utilisateurs

Utilisateur 1 : PG1 + Croq1 + Num 3 à Num 10
Utilisateur 2 : PG1 + PG2 + Croq2 +Croq3 + Num 5 à Num 12
Utilisateur 3 : PG1 + PG2 + PG3 + Croq2 +Croq3 + Num 7 à Num 14
Utilisateur 4 :pG1 + PG2 + PG3 + PG4 + Croq2 +Croq3 + Croq4 + Num x à Num xx
etc....
Et les onglets 1 et 2 personne ne les a ?

Le site est plein d'exemple sur cette base....
Fais une recherche avec le moteur de recherche en haut à droite.

En clair chaque utilisateur est autorisé à voir que ses onglets qui lui a été défini sans modifier leur nom apparent.
Un peu comme des droits informatique :
-un utilisateur X à droit au logiciel 1, 2 et 4 mais pas au 3
-un utilisateur Y à droit au logiciel 1, 2 et 3 mais pas au 4
-un utilisateur Z à droit au logiciel 2, 3 et 4 mais pas au 1

Personne ne renomme les logiciels 1,2 et 3 pour tout le monde 🤔, sinon tu ouvres Word et tu as Excel qui s'affiche !!! o_O😄😄

Mais chacun ne peut intervenir que en fonction de leur droit respectif.

*Je pense que tu devrais revoir ton approche de la question....

@Phil69970
 

Discussions similaires

Réponses
7
Affichages
312

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 069
Messages
2 085 040
Membres
102 763
dernier inscrit
NICO26