Macro nom d'onglet qui s'incrémente

Bonjour à tous,

Alors mon problème est le suivant :

J'utilisais cette macro :

ActiveSheet.Select
    Dim num As Long
    Dim ws As Worksheet
   num = 1
    'Crea un nombre para la ficha que va a ser grabada, este nombre tiene un numero que aumenta en funccion de las fichas que ya existen
    For Each ws In Application.Worksheets
    If Right(ws.Name, 1) = num Then
    num = num + 1
    Else
    Exit For
    End If
    Next
    ActiveSheet.Name = "Formateada" & num

    Sheets.Add After:=ActiveSheet
    ActiveSheet.Select

Dans un fichier qui ne contenait qu'une feuille appelé : Nueva; et sur cette feuille il y avait un bouton créer une nouvelle feuille et quand je l'utilisais, cette macro m'enregistrer la feuille nueva sous le nom Formateada + un numero qui s'incrémenter à chaque fois et ajouter une nouvelle feuille qui s'appeler nueva et installer le bouton crear nueva dessus.

Ce fichier marche très bien je vous l'ai mis en pièce jointe.

Petit hic j'ai ensuite ajouté ce fichier à un autre fichier plus globale qui contenait d'autre onglet et la le code ne marche plus, je pense que c'est du au fait qu'il y ai d'autres onglets que la feuille nueva et les feuilles formateada+numero.

Je vous ai ajouter le fichier

Ce code n'étant pas de moi à la base je ne sais pas comment régler ce problème, ça doit être un truc tout bête mais je n'y arrive pas et c'est pour ça que je m'en remet à vous si l'un d'entre vous serai me dire ou ça cloche dans mon code.

Un grand merci d'avance

Bonjour,

Je te remet ton code commenté

Sub Test()
   ActiveSheet.Select
    Dim num As Long
    Dim ws As Worksheet
    num = 1 '1ère valeur de num = 1
    For Each ws In Application.Worksheets 'Pour chaque Feuille dans le classeur 
    If Right(ws.Name, 1) = num Then 'Si le nom de la feuille comporte à sa droite le nombre contenu dans "num" ("1" la première fois), alors
    num = num + 1 'Ajouter 1 au nombre stocké dans "num"
    Else 'Sinon
    Exit For 'Arrêter de parcourir les feuilles
    End If
    Next 'Passer à la feuille suivante
    ActiveSheet.Name = "Formateada" & num 'Changer le nom de la feuille active

    Sheets.Add After:=ActiveSheet 'Ajouter une feuille après la feuille active
    ActiveSheet.Select
End Sub

Pour faire simple, le code ne fonctionne que si la feuille sur laquelle tu te trouves comporte le nombre 1 à droite de son nom, et parcourt les feuille tant qu'elles comportent à droite de leur nom le numéro correspondant à leur ordre d'apparition. Ensuite, la macro renome la feuille active et en ajoute une nouvelle après celle-ci.

@Pedro22 : tu as oublié d'mettre les commentaires en espagnol !

Pour ajouter une feuille, je te propose :

Sub AjoutFeuille()

    Dim num As Byte
    num = Worksheets.Count
    Sheets.Add After:=Sheets(num)
    Sheets(num+1).Name = "Formateada" & num + 1 
    Sheets(num+1).Select

End Sub

@dhany : je te laisse traduire

Bonjour,

moi perso je trouve le code un peu alambiqué, non ?

En plus un Activesheet.Select...

C'est dire que la verdure est verte (Lapalissade, non ?)

Engros ce que doit faire le code :

un copier coller de la feuille Nueva avec les boutons.

Est il vraiment nécessaire d'avoir le code de création des boutons ?

Je ne crois pas...

Et qu'est-ce qui se passe dès lors qu'il y a 10 feuilles ?

Une erreur car on test qu'un caractère à partir de la droite, du coup on sort de la boucle avec num= 10 et cette feuille existe déjà !

Le code est à revoir entièrement dirais-je...

@ bientôt

LouReeD

haha ça devrait aller dhany, je suis française

Merci beaucoup Pedro22, je comprends mieux le code maintenant.

Mais comment je pourrais faire pour qu'il me parcours uniquement les feuilles s'appelant Formateada avec un num derriere et qu'il ajoute +1 au num des feuille Formateada?

Bonjour,sans traduire c'est ce que je disais : ré écrire le code, mais surtout après un ajout de feuille, la nouvelle feuille est automatiquement sélectionnée, donc :

Sheets(num+1).Select

est à supprimer

Pour une numérotation correcte pour la feuille ajoutée il faudrait faire une boucle pour comptabiliser le nombre de feuilles qui contiennent le mot "Formateada", sinon avec des feuilles autres cela fait que la numérotation comment à 4 (par exemple)

@ bientôt

LouReeD

Ok d'accord, merci à tous de vos réponses

Je vais voir ce que je peux faire avec toutes les infos que vous m'avais donner

Je vous tiens au courant

Essaie avec:

Sub AjoutFeuille()

    Dim num As Byte, i As Byte, Mas As Byte
    Max = Worksheets.Count
    For i = 1 To Max
        If Sheets(i).Name Like "Formateada*" Then num = num + 1
    Next i
    Sheets.Add After:=Sheets(Max)
    Sheets(Max+1).Name = "Formateada" & num + 1 

End Sub
Sub AjoutFeuille()
    Dim num As Byte, Bcl As Integer
    For Bcl = 1 To Worksheets.Count
        If Mid(Sheets(Bcl).Name, 10) = "Formateada" Then
            num = num + 1
        End If
    Next
    Sheets.Add After:=Sheets(Worksheets.Count)
    Sheets(Worksheets.Count).Name = "Formateada" & num + 1
End Sub

Trop tard !!!

@ bientôt

LouReeD

je vois que le .Select est partis

@ bientôt

LouReeD

je vois que le .Select est partis

@ bientôt

LouReeD

A priori il ne te manque pas trop...

J'ignorais qu'un ajout de feuille sélectionnait automatiquement cette dernière.

Moi j'ignorais qu'un String "erreur" était une erreur !

@ bientôt

LouReeD

Bonjour à tous

Plus que trop tard !

Tant pis !

Bye !

Bon j'ai tout testé pour que personne n'ai travailler pour rien, en tout cas un très grand merci à tous c'est vraiment super sympa.

Alors Pedro22 et Looreed;

j'ai le même soucis avec vos deux codes, c'est que je n'arrive pas à l'adapter pour que se soit le nom de la feuille active qu'il me renomme comme Formateada et num et non pas la feuille qui s'ajoute.

J'ai essayer en remplaçant la dernière ligne de vos codes par Activesheet.Name= etc. mais ça me met un bug.

Comment est-ce que je peux faire pour que se soit la activesheet qu'il me renomme formateada et le num incrémenter?

Pour gmb; ton code marche niquel il me créé plusieurs feuilles et incrémente bien le numéro mais le soucis c'est que si par exemple, j'ai créer 3 feuilles Formateada 1, 2 et 3 et que j'efface la feuille Formateada1, la prochaine qu'il me créera sera formateada 4 et non pas 1. Il ne tiens pas compte des feuilles deja créées.

Mais si je ne trouve pas d'autre solution je garderai ce code là

Merci à toi

En début de macro, créé une variable "Set Feuille = ActiveSheet" et en fin de macro utilise "Feuille.Name=..."

Je suis dsl je me rends compte que je ne suis vraiment pas douée

J'ai essayer comme ça :

ActiveSheet.Select
Dim num As Byte, i As Byte, Mas As Byte
    Max = Worksheets.Count
    For i = 1 To Max
        If Sheets(i).Name Like "Formateada*" Then num = num + 1
    Next i   
    ActiveSheet.Name = "Formateada" & num + 1

Ca marche très bien mais par contre dès que je supprime une des "Formateada+num" créer par exemple Formateada1 il me renvoi un bug

J'ai essayer comme ça :

ActiveSheet.Select

Dim Feuille As Sheets
Dim num As Byte, i As Byte, Mas As Byte
   Feuille = ActiveSheet
    Max = Worksheets.Count
    For i = 1 To Max
        If Sheets(i).Name Like "Formateada*" Then num = num + 1
    Next i

    ActiveSheet.Name = "Formateada" & num + 1

Et la ça me renvoi une erreur sur Feuille=ActiveSheet et je ne comprends pas pourquoi.

Je suis vraiment dsl de ne rien comprendre comme ça là, je me désole moi même

Je ne comprends pas pourquoi tu ajoutes une feuille et au final tu en renomme une autre... Enfin bref. J'ai adapté mon code pour qu'il fonctionne même en cas de suppression de certaines feuilles.

Sub AjoutFeuille()

    Dim num As Byte, i As Byte, Mas As Byte, Feuille As Worksheet
    Max = Worksheets.Count
    Set Feuille = ActiveSheet
    For i = 1 To Max
        If Sheets(i).Name Like "Formateada*" Then
            If CByte(Right(Sheets(i).Name, Len(Sheets(i).Name) - Len("Formateada"))) > num Then
                num = CByte(Right(Sheets(i).Name, Len(Sheets(i).Name) - Len("Formateada")))
            End If
        End If
    Next i
    Feuille.Name = "Formateada" & num + 1

End Sub

Edit : j'ai supprimé l'instruction pour ajouter une feuille, d'après tes dernières précisions

Non en effet je n'ai pas besoin de créer une autre feuille c'est pour ça que j'avais enlever cette ligne de code, regarde dans mon poste plus haut.

Merci beaucoup je l'ai tester et il marche à merveilles; un grand merci à toi Pedro22!

Merci à Loored et gmb pour leur aide!

Vous avez résolu mon problème

Je vous souhaite une bonne journée et à la prochaine

Merci de vos remerciements !

Deux remarques tout de même :

1) demandez ce que vous cherchez à faire plutôt que de demander de comprendre un code alambiqué, quelque fois c'est plus rapide...

2) moi c'est LouReeD avec "ou" et non pas "oo"

à bientôt

LouReeD

Rechercher des sujets similaires à "macro nom onglet qui incremente"