XL 2019 récupérer premiers/dernier chiffres du nom d'un onglet

  • Initiateur de la discussion Initiateur de la discussion litelsousa
  • Date de début Date de début

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 !

litelsousa

XLDnaute Occasionnel
Bonjour,

Je cherche à extraire les premiers et derniers chiffres du nom d'un onglets.
J'ai trouvé comment avoir les X derniers caractères, mais mon soucis est que je vais de 1 à 500... donc de 1 à 3 caractères à récupérer.

La feuille "modèle" est celle à recopier selon la feuille "liste". j'ai réussi à la recopier le nombre de fois voulu et à la nommer correctement

Je vous remercie.
 

Pièces jointes

Bonjour,

Vu le nombre d'affichages et de réponse, je pense ne pas être le seul à ne pas voir ce que vous voulez exactement faire (formule, vba ?)

Cette macro vous ajoutera les n feuilles sur le modèle 'Modèle' et placera les numéros en E7 et E37 de la nouvelle feuille.

La macro teste si la feuille existe déjà ou pas. Si elle n'existe pas elle est créée sinon on passe à la suivante.

VB:
Sub CreationFeuilleParNom()
    Dim wsListe As Worksheet, wsModele As Worksheet, wsTest As Worksheet
    Dim i As Integer, Der As Integer
    Dim Noms As Variant, tbl As Variant

    Application.ScreenUpdating = False

    With ThisWorkbook
        Set wsListe = .Sheets("Liste")
        Set wsModele = .Sheets("Modèle")
    End With

    With wsListe.Range("A3").CurrentRegion
        Noms = .Offset(1).Resize(.Rows.Count - 1).Columns(2)
    End With

    Der = UBound(Noms)
    For i = Der To 1 Step -1
        '
        ' Tester si la feuille existe déjà
        Set wsTest = ThisWorkbook.Sheets(Noms(i, 1))
        '
        ' Si elle n'existe pas on la crée
        If wsTest Is Nothing Then
            wsModele.Copy After:=wsListe
            With ActiveSheet
                ' Nom de la feuille
                .Name = Noms(i, 1)
                ' Eclater le nom
                tbl = Split(Noms(i, 1), " ")
                ' premier élément en E7 et dernier en E37
                .Range("E7") = tbl(0)
                .Range("E37") = tbl(UBound(tbl))
            End With
        End If
        Set wsTest = Nothing
    Next i

    Application.ScreenUpdating = True
End Sub

Cordialement
 

Pièces jointes

Dernière édition:
Bonsoir à toutes & à tous, bonsoir @litelsousa

Bon j'arrive un peu tard mais avec des formules et un nom défini j'apporte une solution :

Pour le nom de l'onglet (tu l'avais déjà) j'utilise le nom défini :
Enrichi (BBcode):
_Onglet  :  =STXT(CELLULE("nomfichier";!$A$1);TROUVE("]";CELLULE("nomfichier";!$A$1))+1;31)
Attention bien mettre le ! devant les $A$1

Ensuite la formule pour la glissière 1 (tu l'avais) :
Enrichi (BBcode):
=STXT(_Onglet;1;TROUVE(" ";_Onglet)-1)

Celle pour la glissière 2 :
Enrichi (BBcode):
=STXT(SUBSTITUE(_Onglet;" ";"/";NBCAR(_Onglet)-NBCAR(SUBSTITUE(_Onglet;" ";"")));TROUVE("/";SUBSTITUE(_Onglet;" ";"/";NBCAR(_Onglet)-NBCAR(SUBSTITUE(_Onglet;" ";""))))+1;31)
Ici l'astuce est de :
  • trouver le nombre d'espaces dans le nom d'onglet,
  • de remplacer le dernier par un / (interdit dans les noms d'onglet)
  • de renvoyer ce qui suit ce qui suit le / (31 est la longueur maximale d'un nom d'onglet)
ceci dit, si tu crées les onglets par macro, tu peux inscrire ces deux valeurs au moment de la création...
(Modif : c'est la solution de @Hasco #2)
Voir la pièce jointe
Amicalement
Alain
 

Pièces jointes

Dernière édition:
Et bien un grand merci, c'est exactement ce que j'asseyais de faire👍

C'est marrant, je suis obligé de validé une des deux cellule sur n'importe quelle feuille pour que toute se mettent à jour... mais ça, je le fais sans aucun soucis
 
Bonjour,

Bon ben je reviens...

La valeur obtenue dans ma cellule ne me permet pas d'utiliser la fonction RechercheV...

Si je rentre la valeur de la cellule à la main, c'est bon, mais avec la même formule, si la valeur recherchée est le résultat d'une formule ça me met #N/A...
 

Pièces jointes

Bonjour à toutes & à tous, bonjour @litelsousa

C'est un problème de type de données (Chaîne et Numérique) remplace les formules par
Enrichi (BBcode):
=CNUM(STXT(@_Onglet;1;TROUVE(" ";@_Onglet)-1))
et
Enrichi (BBcode):
=CNUM(STXT(SUBSTITUE(@_Onglet;" ";"/";NBCAR(@_Onglet)-NBCAR(SUBSTITUE(@_Onglet;" ";"")));TROUVE("/";SUBSTITUE(@_Onglet;" ";"/";NBCAR(@_Onglet)-NBCAR(SUBSTITUE(@_Onglet;" ";""))))+1;31))
Et ça devrait rouler
Amicalement
Alain
 
- 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
890
Retour