Macro nom onglet selon cellule

Masto

XLDnaute Nouveau
Bonsoir à tous;

Je suis en train de bricoler une base de données avec mes petites connaissances.
Le principe est que lorsque j'ajoute un patient dans ma feuille "DONNEES", je crée une fiche correspondant au patient en copiant la feuille "MODELE", et en inscrivant le numéro du patient dans la case verte de la fiche patient.

Le problème vient de ma macro censée nommer la feuille selon le numéro du patient inscrit dans la case verte.
Au moment ou je copie la feuille "MODELE" puis que je tente d'inscrire le numéro du patient dans la case verte, c'est la crise.

Quelqu'un peut-il me donner la solution svp ?
Et puisque j'y suis, n'auriez vous pas une macro permettant de classer les feuilles dans l'ordre croissant (et tolérant des feuilles avec des noms en lettres).

Merci!
Masto
 

Pièces jointes

  • Base données.xls
    39 KB · Affichages: 156
  • Base données.xls
    39 KB · Affichages: 155
  • Base données.xls
    39 KB · Affichages: 163

Fireman.80

XLDnaute Junior
Re : Macro nom onglet selon cellule

bonjour keul

Voila une macro commentée qui devrait faire ce que tu souhaites

Code:
Sub test()
'on verifie tous les noms de feuille
For n = 1 To Sheets.Count
' Si une feuille a deja le nom qui est dans la cellule A2
'de la feuille1
 If Sheets(n).Name = Sheets("Feuil1").Range("A2") Then
 'on la selectionne
   Sheets(n).Select
 ' et on sort de la macro
   Exit Sub
 End If
Next n
'si on n'est pas sorti apres avoir controlé toutes le feuilles
'on crée une nouvelle feuille que l'on nomme dans la foulée
  Sheets.Add.Name = Range("A2")
End Sub

Bonjour Jean, bonjour le fil !

Je viens de tomber sur cette macro dans les recherches. J'ai parfaitement besoin de cette macro pour créer un onglet pour chaque nom de personne que je vais insérer dans une liste établie sur une colonne d'un premier onglet... Par contre à la vue de ta macro détaillée, je ne parviens pas à la faire fonctionner.

Peux tu m'aider ?

Merci beaucoup,

Philippe.
 

pierrejean

XLDnaute Barbatruc
Re : Macro nom onglet selon cellule

bonjour Fireman.80

Salut G.David

Telle quelle la macro ne creera eventuellement qu'une feuille

Pour toute une liste il convient de creer une autre boucle

par exemple si ta colonne (colonne A) est dans la feuil1 et que la liste debute ligne 2
sub test

Code:
for m=2 to sheets("Feuil1").range("A65536").end(xlup).row
'on verifie tous les noms de feuille
nom=Sheets("Feuil1").range("A" & m)
For n = 1 To Sheets.Count
' Si une feuille a deja le nom qui est dans la cellule A2
'de la feuille1
 If Sheets(n).Name = nom 'on la selectionne
  [COLOR=black] [COLOR=blue]'Sheets(n).Select 'il n'est pas utile de la selectionner[/COLOR] 
[/COLOR] ' et on sort de la macro
  ' Exit Sub
[COLOR=blue]'on note l'existence[/COLOR]
existe=True
 End If
Next n
'si on n'est pas sorti apres avoir controlé toutes le feuilles
[COLOR=blue]' si elle n'existe pas deja 
'on crée une nouvelle feuille que l'on nomme dans la foulée
[/COLOR]  if not existe then Sheets.Add.Name = Range("A2")
next m
 

Fireman.80

XLDnaute Junior
Re : Macro nom onglet selon cellule

Re pierrejean et G-DAVID,

Pierrejean, j'ai essayé ta dernière solution pour que ceci prenne en charge ma liste au fur et à mesure où je la complète mais cela ne fonctionne pas.

Je joins un fichier exemple qui contient un onglet RECAPITULATIF où il y aura l'ensemble des noms qui seront saisis et qu'on veut retrouver automatiquement dans le nom de l'onglet.

Merci d'avance pour votre aide toujours aussi précieuse.

Phil
 

Pièces jointes

  • ONGLET.xls
    15 KB · Affichages: 57
  • ONGLET.xls
    15 KB · Affichages: 57
  • ONGLET.xls
    15 KB · Affichages: 63

pierrejean

XLDnaute Barbatruc
Re : Macro nom onglet selon cellule

Re

Avec toutes mes excuses

Il y avait des approximations !!!

Voila la bonne macro

Code:
Option Explicit
Sub test()
Dim n As Integer
Dim m As Integer
Dim existe As Boolean
Dim nom As String
For m = 2 To Sheets("RECAPITULATIF").Range("A65536").End(xlUp).Row
'on verifie tous les noms de feuille
nom = Sheets("RECAPITULATIF").Range("A" & m)
For n = 1 To Sheets.Count
' Si une feuille a deja le nom qui est dans la cellule A2
'de la feuille1
 If Sheets(n).Name = nom Then 'on la selectionne
'on note l'existence
   existe = True
 End If
Next n
'si elle n'existe pas deja
'on crée une nouvelle feuille que l'on nomme dans la foulée
  If Not existe Then Sheets.Add.Name = nom
'on réinitialise le flag d'existence
  existe = False
Next m
End Sub
 

Pièces jointes

  • ONGLET.zip
    7.9 KB · Affichages: 54
  • ONGLET.zip
    7.9 KB · Affichages: 48
  • ONGLET.zip
    7.9 KB · Affichages: 50
Dernière édition:

lilou

XLDnaute Occasionnel
Re : Macro nom onglet selon cellule

Bonjour,

J'aurai besoin de votre aide. Je voudrais que le nom de l'onglet se mette automatiquement par au mois qui se trouve dans les cellules D3 de chaque feuille. Ainsi dans la feuille planning dès que je change le mois tout ce mette à jour instantanement sur les noms des onglets.

Merci beaucoup pour votre aide
 

Pièces jointes

  • Hrs Stagiaires.zip
    63.4 KB · Affichages: 28
  • Hrs Stagiaires.zip
    63.4 KB · Affichages: 24
  • Hrs Stagiaires.zip
    63.4 KB · Affichages: 24

G.David

XLDnaute Impliqué
Re : Macro nom onglet selon cellule

le code se place dans un module
et se lance soit par macro --> ma_macro
soit en affectant la macro a un bouton
tu peux également ajouter une macro événementielle sur l'onglet planning qui lors du changement ou de l'activation appelle cette macro
mais pour commencer le plus simple c'est
Alt F
cliquer sur le projet ( fenetre de droite )
insertion module
coller le code ( avec un nom quelquonque )
lancer la macro
normalement elle doit dans un premier temps effacer les noms des mois pour les remplacer par des chiffres et à la deuxième couche mettre les noms des nouveaux mois ( pris dans la cellule D3 de chaque feuille)
Cette macro parcours le classeur et travaille sur les feuilles ( en index ne pas changer la place des feuilles indexées de 2 à 13)

après tu peut coller dans la macro les instructions
Code:
Application.screenupdating=false ( en debut avant la premiere boucle)
...
applicatrion.screenupdating=true ( en fin après la deuxieme boucle)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 925
Membres
103 984
dernier inscrit
maliko67