Recopie modèle et le renomme

La Vouivre

XLDnaute Occasionnel
Bonsoirs amis du forum
J’ai une macro qui me recopie et renomme un onglet en l'incrémentant d'un chiffre ,je voudrais avoir une lettre à la place
Comment changer la ligne de code

i = WorksheetFunction.Max(i, CInt(Mid(s.Name, Len(PREFIX) + 1)) + 1)

pour avoir à la place de " lettre 1 " "lettre A" ;"letre B"

Je n'arrive pas à entrer l'alphabet à la place des chiffres .
De plus si possible après l'alphabet simple pouvoir ajouter plusieurs lettre exemple "lettre AA " "lettre AB" " lettre AAA" "lettre AAB" ainsi de suite

Merci à tous
Bonne soirée
 

Pièces jointes

  • POUR ESSAIS.xls
    39.5 KB · Affichages: 90
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Recopie modèle et le renomme

Bonjour à tous,

Ton fichier est un classeur contenant trois feuilles sans code...

Merci de déposer un fichier avec ce que tu as déjà et de le mettre à la place du fichier déposé dans le message précédent.

L'ouverture d'XL permet de constituer le fichier que tu as déposé.

A+
 

Pierrot93

XLDnaute Barbatruc
Re : Recopie modèle et le renomme

Bonjour LaVouivre
Salut Jean-Claude:)

essaye le code ci dessous, si j'ai bien compris :

Code:
Option Explicit
Sub test()
Dim p As String, ws As Worksheet, x As String
p = "Lettre "
For Each ws In Worksheets
    If ws.Name Like p & "*" Then
        If Len(Mid(ws.Name, 8)) > Len(x) Or Mid(ws.Name, 8) > x Then x = Mid(ws.Name, 8)
    End If
Next ws
If Asc(Right(x, 1)) < 90 Then
    x = Mid(x, 1, (Len(x) - 1)) & Chr(Asc(Right(x, 1)) + 1)
Else
    x = x & Chr(65)
End If
Sheets("modele").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = p & x
End Sub

bonne journée
@+
 

La Vouivre

XLDnaute Occasionnel
Re : Recopie modèle et le renomme

Bonjours amis du forum
Je te remercie Pierrot93 de t’intéresser à mon problème, mais j’ai un bug dans le fichier
Une erreur se produit, j’ai comme message

Argument ou appel de procédure incorrect

Apparemment c’est dans la ligne

If Asc(Right(x, 1)) < 90 Then

Bonne soirée
 

Pierrot93

XLDnaute Barbatruc
Re : Recopie modèle et le renomme

Re

comprends pas trop, chez moi cela fonctionne... As tu utilisé le code dans sa totalité ? Combien de feuilles et quels noms utilisés ? Ne fonctionne que sur les feuilles dont le nom commence par "Lettre " suivi de caractère alpha en majuscule... si le caractère qui suit est autre, effectivement ca coince... Mais tu disais :

pour avoir à la place de " lettre 1 " "lettre A" ;"letre B"

donc codé en fonction...

@+
 

La Vouivre

XLDnaute Occasionnel
Re : Recopie modèle et le renomme

Merci pour avoir répondu aussi vite.
Mon fichier à une première feuille nommée modèle qui après recopie et nommée lettre.
Jusque la tous va bien je suis satisfais de la macro, c’est après que ça se complique une incrémentation des onglets se fais par chiffre, moi je voudrais la faire par lettre pour ne pas avoir « lettre 1 » mais « lettre A »
Je n’arrive pas à remplacer le chiffre par les lettres de l’alphabet dans l’incrémentation
Merci
Dans l’attente de te lire
 

Pierrot93

XLDnaute Barbatruc
Re : Recopie modèle et le renomme

Re

il faut qu'il y ait au moins déjà une feuille nommée "Lettre A", regarde le fichier joint, chez moi fonctionne, ou alors quelque chose doit m'échapper...

bonne soirée
@+
 

Pièces jointes

  • POUR ESSAIS.zip
    9.5 KB · Affichages: 36

La Vouivre

XLDnaute Occasionnel
Re : Recopie modèle et le renomme

Merci pour m’avoir expliquer le départ du fichier, effectivement ça marche bien, mais quand on à fais le premier tour de l’alphabet c’est la lettre Z qui est reprise pour doubler et non la lettre A afin d’avoir AA .
 

La Vouivre

XLDnaute Occasionnel
Re : Recopie modèle et le renomme

Bonjours amis du forum
En ce début de week end je viens relancer ma demande pour renommer les onglets
Je n’arrive pas à trouver comment faire pour que quand la boucle à fait un tour d’alphabet pour renommer les onglets ( lettre A ;lettre B ……lettre Z ) elle continue avec ( lettre AA ; lettre AB …….lettre AZ ; lettre BA ;lettre BB )
J’ai ce sacré Z que je ne peux changer, je ne trouve pas le code à changer, pourtant il me semble bien que ce sont ces lignes à changer

If Asc(Right(x, 1)) < 90 Then
x = Mid(x, 1, (Len(x) - 1)) & Chr(Asc(Right(x, 1)) + 1)
Else
x = x & Chr(65)

dite moi si je me trompe

Merci à tous
Bon week end
 

La Vouivre

XLDnaute Occasionnel
Re : Recopie modèle et le renomme

Merci pour la rapide réponse
Je vois que vous êtes matinal et fidèle au poste
Bon courage, moi aussi je me réveille doucement, c’est le week-end et en plus les vacances pour certains petits veinards, restons coooooooool et ça veut bien allllller
 

Pierrot93

XLDnaute Barbatruc
Re : Recopie modèle et le renomme

Re

oui tu as raison c'est le week end, regarde ci de sous, j'ai modifié l'instruction "if"

Code:
If Asc(Right(x, 1)) < 90 Then
    x = Mid(x, 1, (Len(x) - 1)) & Chr(Asc(Right(x, 1)) + 1)
Else
    For i = 1 To Len(x) + 1
        x = IIf(i = 1, Chr(65), x & Chr(65))
    Next i
End If

par contre cela va donner des suites comme ceci :
A, B, C => Z ensuite AA, AB, AC => AZ ensuite AAA, AAB, AAC => AAZ

je regarde si l'on peut faire comme suit :
A, B, C => Z ensuite AA, AB, AC => AZ ensuite BA, BB, BC => BZ

testes et dis moi si cela répond à ta demande.

@+

Edition : Rajoutes dans les déclarations de variables : i As Byte

2ème édition j'avais collé le mauvais code, pas encore réveillé.
 
Dernière édition:

La Vouivre

XLDnaute Occasionnel
Re : Recopie modèle et le renomme

Je sèche sur la déclaration de variable un bug apparaît à chaque fois
Je ne suis pas comme vous expert dans l’art de la manip de procédures, je bricole, donc je ne doit pas mettre la ou il faut la variable
 

Statistiques des forums

Discussions
312 226
Messages
2 086 414
Membres
103 204
dernier inscrit
alaa20dine01