Incrémenter le nom d'une feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Florian53

XLDnaute Impliqué
Bonjour à tous,

Je voudrais réaliser un classeur de nom "demande d'achat":

Avec une macro intégrée dans ce classeur qui sert à incrémenter le nom de la feuille par exemple:
- demande d'achat001
- demande d'achat002
- demande d'achat003

Le script qui correspond à ça est le suivant:

Sub AutoSaveIncremental()
Dim MyName As String, MyNumber As Byte

MyName = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)

If Val(Right(MyName, 3)) = 0 Then
MyName = MyName & "001"
Else
MyNumber = Val(Right(MyName, 3))
MyName = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 7) & Format(MyNumber + 1, "000")
End If
ThisWorkbook.SaveAs MyName

End Sub


Le problème que je rencontre est qu'une fois utilisé il me créer bien le classeur "demande d'achat001" mais si je le ferme et que je réutilise la macro il me marque :

Un fichier nommé "demande d'achat001.xls" existe déjà a cet emplacement. Voulez vous le remplacer?


Avec 3 trois choix possible:
- Oui, dans ce cas il le remplace
- Non, dans ce cas il me met erreur d'exécution
- Annulé

Je voudrais savoir si il serait possible qu'il mémorise à la valeur ou l'incrémentation c'est arrêté pour qu'il reprenne une fois que l'on lui demande.
 
Re : Incrémenter le nom d'une feuille

RE


Donc pour incrémenter le nom d'une feuille
1) créer un classeur vierge avec 3 feuilles par exemple
2) nomme la première feuille: demande d'achat001
3) sélectionne cette feuille
4) lance la macro ci-dessous


Code:
[FONT=Courier New][COLOR=darkblue]Sub[/COLOR] incremente_nom_feuille()
[COLOR=darkblue]Dim[/COLOR] MyName [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]String[/COLOR], MyNumber [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Byte[/COLOR]
[COLOR=darkblue]With[/COLOR] ActiveSheet
    MyName = Left(.Name, Len(.Name) - 3)
    MyNumber = Val(Right(.Name, 3))
    [COLOR=darkblue]With[/COLOR] .Next
        .Name = MyName & Format(MyNumber + 1, "000")
        .Activate
    [COLOR=darkblue]End[/COLOR] [COLOR=darkblue]With[/COLOR]
[COLOR=darkblue]End[/COLOR] With
End [COLOR=darkblue]Sub[/COLOR][/FONT]

Bonjour à tous,

Désolé je me suis mal exprimé je demande bien a incrémenter le nom du classeur et non pas le nom de la feuille.
 
Re : Incrémenter le nom d'une feuille

Bonjour à tous

J'ai remarqué qu'il y avait beaucoup de questions sur la numérotation de document et le suivit de ces mêmes numéros.

Voici ce que j'ai fait : Macro complémentaire qui gère les numérotations
Codifié de 1 à xxx, vous pouvez gérer jusqu'à 65536 numéros différents pour les versions antérieures à excel 2007.

Dans le classeur exemple
une feuille d'initialisation de 5 n° différents avec un bouton.
la macro lance 2 macros de la macro complémentaire
Init_numbers Code, Format, Valeur d'initialisation
Save_numbers

Une feuille d'utilisation avec 2 formules
=Get_Number_Last(Code) ' Qui donne le dernier numéro utilisé
=Get_Number_Next(Code) ' Qui donne le prochain numéro
un Bouton qui lance 2 macro de la macro complémentaire
Maj_numbers Code, Nouvelle valeur ' pour mettre à jour le numero
Save_numbers ' Pour sauvegarder les numéros (à la fermeture par exemple)
je n'ai pas voulu faire une sauvegarde automatique pour laisser libre cette action en cas de non validation de document par exemple.

Installation de la macro (après copie des fichiers joints):
Menu outils / Macros Complémentaires
Bouton parcourir, chercher le fichier et le valider
Installation pour utilisation VBA (dans la fenetre VBA)
Menu Outils / Références
Cocher numeroter

Voci les fichiers :
 

Pièces jointes

Re : Incrémenter le nom d'une feuille

Bonjour à tous

J'ai remarqué qu'il y avait beaucoup de questions sur la numérotation de document et le suivit de ces mêmes numéros.

Voici ce que j'ai fait : Macro complémentaire qui gère les numérotations
Codifié de 1 à xxx, vous pouvez gérer jusqu'à 65536 numéros différents pour les versions antérieures à excel 2007.

Dans le classeur exemple
une feuille d'initialisation de 5 n° différents avec un bouton.
la macro lance 2 macros de la macro complémentaire
Init_numbers Code, Format, Valeur d'initialisation
Save_numbers

Une feuille d'utilisation avec 2 formules
=Get_Number_Last(Code) ' Qui donne le dernier numéro utilisé
=Get_Number_Next(Code) ' Qui donne le prochain numéro
un Bouton qui lance 2 macro de la macro complémentaire
Maj_numbers Code, Nouvelle valeur ' pour mettre à jour le numero
Save_numbers ' Pour sauvegarder les numéros (à la fermeture par exemple)
je n'ai pas voulu faire une sauvegarde automatique pour laisser libre cette action en cas de non validation de document par exemple.

Installation de la macro (après copie des fichiers joints):
Menu outils / Macros Complémentaires
Bouton parcourir, chercher le fichier et le valider
Installation pour utilisation VBA (dans la fenetre VBA)
Menu Outils / Références
Cocher numeroter

Voci les fichiers :

Tout d'abord merci à toi d'avoir pris de ton temps pour me répondre,

Est ce qu'il serait simple de l'adapte a mon besoin c'est à dire que cela incrémente le nom du classeur et non pas le texte de la cellule.

Car je pense que cela résoudrai mon problème?

Je dispose de escel 2007 et je ne trouve pas "macro complémentaires"
 
Re : Incrémenter le nom d'une feuille

re:

Pour lier la macro complementaire :
en Haut à gauche le bouton Officel (Rond)
en bas un bouton : options excel
Choisir à gauche : Complément
Enbas de la fenetre : bouton atteinde
chercher à l'aide du bouton parcourir la macro complementaire fournie
valider

ensuite :
dans le VBA : Menu outils / Reference
Trouver numeroter et le cocher, valider
(une fois que c'est fait, tu vois dans la fenetre de gauche sous la liste de tes modules, une liste de références apparaitre)

ensuite ecrire une macro d'initialisation (ne servira qu'une seule fois ou à chaque remise à zero du compteur
Code:
Sub init()
    init_numbers [B][COLOR="Red"]10[/COLOR][/B], "", "0"
End Sub
en rouge : le code tres important
lancer la macro : le triangle dans la barre d'icone

dans ta macro :
Code:
Sub AutoSaveIncremental()
     Dim MyName As String, [B]MyNumber As Variant[/B]
' Récupération du prochain numéro
     [B]MyNumber = get_number_next([COLOR="red"][B]10[/B][/COLOR])[/B]
     MyName = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 7) [B]& Format(MyNumber, "000"[/B])
' Mise à jour de la numerotation
     maj_numbers 10,myNumber
' Sauvegarde
     save_numbers    
ThisWorkbook.SaveAs MyName
End Sub
En gras les modif à apporter
ps: si tu veux le dernier n° pour reouvrir le dernier fichier enregistré
Mynumber = get_number_last(10)

Mon fichier fonction sur 2007, donc pas de problemes (et je viens de tester)
 
Dernière édition:
Re : Incrémenter le nom d'une feuille

Merci à toi cela fonctionne bien, par contre il coupe le nom de mon classeur:
l'original s'appelle "Demande d'achat"
et dés que je commence à incrémenter il me met "demande d'ac001' demande d'ac002"
J'ai essayé de regarder dans le script pour voir ce qui gérait la longueur du nom de classeur mais j'ai pas vu.
 
Re : Incrémenter le nom d'une feuille

re:

la numerotation etant externe : plus de recherche sur le disque pour trouver le dernier :
Code:
     MyName = ThisWorkbook.Name & " " & Format(MyNumber, "000")

En fait je voulais savoir pourquoi il me simplifier le nom de mon classeur lors de l'enregistrement il passe de "demande d'achat" à "demande d'ac001"

Comme si il y avait une longueur de caractère a respecter avant que les chiffres se mettre au bout.

Je voudrais savoir aussi si il serait possible qu'une fois l'incrémenation elle me renvoie le lien hypertexte de la page enregistré (par exemple demande d'ac001") sur une cellule?
 
Re : Incrémenter le nom d'une feuille

re:

je te l'ai dit : dans cette ligne

Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 7)

tu prends le nom du classeur en cours moins les 7 caracteres de droite, c'est pour cela que ton nom de fichier est tronqué

il suffit alors de prendre uniquement ThisWorkBook.name
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
1 K
O
Réponses
5
Affichages
2 K
C
Réponses
8
Affichages
2 K
Genii
G
B
Réponses
9
Affichages
2 K
bodiallo
B
Y
Réponses
2
Affichages
1 K
ynx69
Y
R
Réponses
2
Affichages
2 K
R
Retour