Renommer onglet sur codage VBA existant

thenewone

XLDnaute Nouveau
Bonjour,
Avec des informations récupérées sur le site, j'ai créé un classeur Excel dans le but d'utiliser au quotidien une mini base de données.
J'ai donc remplir un premier onglet"Base" dans lequel j'ai indiqué les différents champs que je vais devoir remplir pour chacun de mes membres : Nom, prénom, date de naissance, adresse etc.
J'ai ensuite créé un onglet "Formulaire" qui me sert à générer à partir de la macro récupérée, les différents formulaires nominatifs que je pourrai ensuite imprimer.
La macro que j'ai copié à partir du site me permet effectivement de générer les différents onglets nominatifs, mais ceux-ci se nomment automatiquement Contact_1, Contact_2 etc.
A la place de Contact_1, Contact_2..... j'aimerais que ceux-ci soient nommés du prénom de la personne (dans le fichier modèle joint Paul, Jacques, Patrick...).
Comme modifier la macro dans ce sens ???
En vous remerciant d'une réponse rapide car je me prends la tête depuis plusieurs jours sans succès !!!
Christian
 

Pièces jointes

  • 2013 Essai.xlsm
    102.6 KB · Affichages: 99

Robert

XLDnaute Barbatruc
Repose en paix
Re : Renommer onglet sur codage VBA existant

Bonjour TheNewOne et bienvenu, bonjour le forum,

Trois questions ! Souhaites-tu conserver le code qui supprime tous les onglets sauf le premier ? Que vas tu faire quand deux personnes auront le même prénom ? Souhaites-tu conserver le copier coller du code ?
 

thenewone

XLDnaute Nouveau
Re : Renommer onglet sur codage VBA existant

Bonsoir,
Le code qui supprime tous les onglets sauf le premier me convient puisqu'il me permet de rééditer les fiches nominatives au fur et à mesure des modifications ou rajouts.
Effectivement, je n'avais pas pensé au même prénom. Pour corriger cela peut-être utiliser le nom (pour moi ça ne pose pas de problème).
Par contre, étant novice en VBA, je ne comprends pas la troisième question.
Comme je te le disais, j'ai copié le code à partir d'un exemple pris sur le site, je l'ai légèrement modifié en fonction de mon besoin et de mes maigres connaissances, voilà où j'en suis...
A plus tard... et merci pour ton aide rapide
Christian
 

ROGER2327

XLDnaute Barbatruc
Re : Renommer onglet sur codage VBA existant

Bonjour à tous


Essayez ceci :​
VB:
Sub test()
Dim i%, k%, tmp$, prout%
Application.ScreenUpdating = False
With Sheets("Base")
    'suppression des onglets existant deja
    For k = Sheets.Count To 1 Step -1
        tmp = Sheets(k).Name
        If tmp <> "Formulaire" And tmp <> "Base" And Left(tmp, 7) Like Sheets(k).[B2].Value & "*" Then
            Application.DisplayAlerts = False
            Sheets(k).Delete
            Application.DisplayAlerts = True
        End If
    Next k
    'boucle sur le nombre d'individus
    For i = 2 To .Range("A65536").End(xlUp).Row
        'création de l'onglet à partir de l'onglet vierge Formulaire
        Sheets("Formulaire").Copy After:=Sheets(Sheets.Count)
        prout = 0
        On Error GoTo E
        ActiveSheet.Name = .Cells(i, 2).Value & IIf(prout, "_" & prout, "")
        On Error GoTo 0
        .Range(.Cells(i, 1), .Cells(i, 28)).Copy
        ActiveSheet.Range("B1").PasteSpecial Paste:=xlValues, Transpose:=True
    Next i
End With
Application.ScreenUpdating = True
Exit Sub
E:
    prout = prout + 1 - (prout = 0)
    Resume
End Sub


ROGER2327
#6259


Lundi 9 Phalle 139 (Godemiché, économe - fête Suprême Quarte)
2 Fructidor An CCXX, 7,1687h - millet
2012-W33-7T17:12:17Z


P.s. : Bonjour Robert. Sûr que des questions se posent. Pour les doublons, j'ajoute _2, _3...
Quant au copié/collé, il serait bien préférable de s'en passer, à mon avis. Mais des goûts et des couleurs, point trop n'en faut disputer... Je propose une base de travail très très très perfectible.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Renommer onglet sur codage VBA existant

Re...

Oui, je m'ai trompé : la ligne
Code:
        If x<> "Formulaire" And x <> "Base" And Left(x, 7) Like Sheets(k).[B2].Value & "*" Then
est fausse. Il faut écrire
Code:
        If tmp <> "Formulaire" And tmp <> "Base" And Left(tmp, 7) Like Sheets(k).[B2].Value & "*" Then

Mille excuses. (Je corrige dans le message précédent.)


ROGER2327
#6260


Lundi 9 Phalle 139 (Godemiché, économe - fête Suprême Quarte)
2 Fructidor An CCXX, 7,2966h - millet
2012-W33-7T17:30:43Z
 

thenewone

XLDnaute Nouveau
Re : Renommer onglet sur codage VBA existant

Merci, cela fonctionne... mais imparfaitement.
En fait si je modifie un champ dans ma Base -par exemple le prénom-, et que je relance la macro, effectivement les nouveau onglets modifiés sont corrigés mais l'un des onglets est conservé et un nouvel onglet avec le même prénom se crée en plus avec prénom_2 et ainsi de suite si d'autre modifications sont effectuées avec prénom_3 etc.
Pour aider dans la résolution de ce problème, j'ai remarqué que la dernière ligne de la Base restait sélectionné (pointillés) après édition des onglets.
@+
 

ROGER2327

XLDnaute Barbatruc
Re : Renommer onglet sur codage VBA existant

Re...

Pourriez-vous donner un (voire des) exemple()s concret(s) des difficultés rencontrées, car je ne parviens pas à reproduire le phénomène que vous évoquez. Quant à la sélection persistante que vous constatez dans l'onglet Base, elle vient du choix de votre méthode de copie des données ; on pourra facilement régler ce problème.


ROGER2327
#6261


Lundi 9 Phalle 139 (Godemiché, économe - fête Suprême Quarte)
2 Fructidor An CCXX, 7,7824h - millet
2012-W33-7T18:40:40Z
 

thenewone

XLDnaute Nouveau
Re : Renommer onglet sur codage VBA existant

Voilà, j'ai repris le fichier (que j'ai rebaptisé Essai2).
J'y ai rajouté quelques personnes, j'ai créé la macro et je l'ai lancé.
Ensuite, dans la Base j'ai changé certains prénoms et j'ai relancé la macro et voilà ce que ça donne : Sébastien est créé 2 fois avec Sébastien_2.
Un grand mystère, car l'erreur est aléatoire, il a fallu que je fasse plusieurs modifications successives avant que cela ne se reproduise.
@+
 

Pièces jointes

  • 2013 Essai2.zip
    196.3 KB · Affichages: 87

ROGER2327

XLDnaute Barbatruc
Re : Renommer onglet sur codage VBA existant

Re...

Il semble que la limitation des prénoms à sept caractères soit la cause du problème. Au lieu de
Code:
        If tmp <> "Formulaire" And tmp <> "Base" And Left(tmp, 7) Like Sheets(k).[B2].Value & "*" Then
essayez
Code:
    If tmp <> "Formulaire" And tmp <> "Base" And tmp Like Sheets(k).[B2].Value & "*" Then
Pour les autres petits problèmes, on verra ensuite...


ROGER2327
#6262


Lundi 9 Phalle 139 (Godemiché, économe - fête Suprême Quarte)
2 Fructidor An CCXX, 8,1700h - millet
2012-W33-7T19:36:29Z
 

thenewone

XLDnaute Nouveau
Re : Renommer onglet sur codage VBA existant

Bonsoir,
J'ai essayé la correction. Tout a l'air de fonctionner correctement.
Demain j'essaierai de remplir la Base complète. Si j'ai un problème je reviens vers vous.
Bonne nuit ! et merci
Christian
 

Discussions similaires

Réponses
12
Affichages
247

Statistiques des forums

Discussions
312 226
Messages
2 086 413
Membres
103 202
dernier inscrit
Claire2BM