Incrémenter un compteur dans le nom de la feuille

jim7963

XLDnaute Junior
Bonjour à tous,

je fais à nouveau appel à votre savoir pour m'aider à finaliser un fichier que j'ai mis au point pour le suivi des notes de frais dans mon entreprise.
Il me reste un dernier point que je n'arrive pas à programmer et je n'arrive pas à trouver de solution.

Dans mon fichier quand quelqu'un à fini de saisir sa note de frais j'ai créé un bouton de validation. Cette validation a pour effet, entre autre, d'utiliser le nom de la personne qui a été saisi en C7 pour en faire le nom de la feuille.
Jusque là rien de compliqué, là où ça pose problème c'est quand une même personne saisi plusieurs notes de frais dans le même mois. Excel n'accepte évidemment pas d'avoir plusieurs feuilles qui ont le même nom cela fait donc planter la macro.

J'avais donc dans l'idée d'incrémenter un numéro à côté du nom de la personne. Ce qui donnerait un nom de feuille de type: "Nom de la personne" & "Numéro de la note de frais pour cette personne".
Le problème c'est que je n'arrive pas à trouver comment coder ça pour obtenir un compteur par personne. J'ai tenté différentes solutions mais rien ne me permet d'obtenir le résultat que je souhaite.

Je veux obtenir un truc du genre: Toto 1, Toto 2, Toto 3, Titi 1, Titi 2, Titi 3, Tata 1, Tata 2, Tata 3

Je vous mets en copie un exemple du fichier que j'ai construit, j'ai viré tout ce qui ne concerne pas le problème actuel.

J'espère avoir été assez clair dans mon exposé ;).
Je vous remercie par avance de l'aide que vous pourrez m'apporter.
 

Pièces jointes

  • Note de frais.xlsm
    69.9 KB · Affichages: 46
  • Note de frais.xlsm
    69.9 KB · Affichages: 46
  • Note de frais.xlsm
    69.9 KB · Affichages: 45
G

Guest

Guest
Re : Incrémenter un compteur dans le nom de la feuille

Bonjour,

Voici une petite fonction qui devrait te donner l'index du nom de la prochaine feuille correspondant à une racine quelconque:
Code:
Function GetNewSheetIndex(ByVal StrRoot As String) As Integer
    'Hasco 19/09/2013 
    Dim sh As Worksheet, strNum As String
    Dim idx As Integer
    StrRoot = Trim(StrRoot)
    For Each sh In Sheets
        If LCase(sh.Name) Like LCase(StrRoot) & " #*" Then
            strNum = Replace(sh.Name, StrRoot, "")
            If IsNumeric(strNum) And strNum > idx Then idx = CInt(strNum)
        End If
    Next sh
    GetNewSheetIndex = idx + 1
End Function

Dim nouveauNomDeFeuille as string
nouveauNomDeFeuille="Toto " & GetNewSheetIndex("Toto")

Attention, elle n'est pas parfaite, elle fonctionera mal sur des noms comme "toto 1 mars 2013" par exemple.

A+
 

jim7963

XLDnaute Junior
Re : Incrémenter un compteur dans le nom de la feuille

Génial Hasco,

ta fonction à l'air de fonctionner parfaitement bien, je viens de la tester pour créer plusieurs pages et aucun problème rencontré.
Je ne m'inquiète pas pour le problème que tu as mentionné le toto 1 est suffisant pour l'usage que je vais en avoir, je ne compte pas rallonger le nom de la feuille au-delà, sinon au pire je reviendrai appeler à l'aide :p

Merci beaucoup beaucoup ;)
 

Discussions similaires

Réponses
5
Affichages
137

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote