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

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

  • Valeur cellule.xlsm
    81.7 KB · Affichages: 13

Hasco

XLDnaute Barbatruc
Repose en paix
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

  • Valeur cellule.xlsm
    79 KB · Affichages: 2
Dernière édition:

AtTheOne

XLDnaute Impliqué
Supporter XLD
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

  • Valeur cellule.xlsm
    67 KB · Affichages: 6
Dernière édition:

litelsousa

XLDnaute Occasionnel
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
 

litelsousa

XLDnaute Occasionnel
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

  • Valeur cellule .xlsm
    41.3 KB · Affichages: 3

AtTheOne

XLDnaute Impliqué
Supporter XLD
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
 

Discussions similaires

Réponses
8
Affichages
392

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 841
dernier inscrit
ferid87