Problème boucle For renommer onglet et cellule

Bonjour,

J'ai mis en place un petit script dont l'objectif est de renommé chaque première cellule ("A1") avec le nom de l'onglet correspondant.

J'ai crée une boucle Do While pour aller récupérer le nom des fichiers présents dans un dossier et chacun les assigner à un onglet.

Dans le code ceci est renseigné avec les lignes :

 onglet = Split(monFichier, "_")(2)
    wb.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = onglet

J'arrive bien à récupérer le nom de mon onglet dans ma cellule A1, sauf qu'au lieu d'avoir le nom de l'onglet pour chaque onglet lors de l’exécution de la boucle Do While dans la cellule "A1" j'ai uniquement le nom du du dernier onglet pour chaque onglet.

Voici mon code complet :

Sub toto()

Application.ScreenUpdating = False

Dim iCalcul As Integer
Dim celA1 As Integer
Dim nomFeuille As String

Dim monFichier As String
Dim wb As Workbook
Dim chemin As String
Dim i As Integer
Dim nom As String
Set wb = Workbooks(ThisWorkbook.Name) 'classeur reception
chemin = ThisWorkbook.Path & "\"
monFichier = Dir(chemin & "*.xlsx", vbNormal)

Do While monFichier <> ""
    onglet = Split(monFichier, "_")(2)
    wb.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = onglet
    'Debug.Print onglet
    Sheets("Feuil1").Range("A1:AH39").Copy Destination:=wb.Sheets(onglet).Range("A1")
    'Debug.Print Sheets("T15").Name

    'Modification cellule A1 par le nom de l'onglet
    nomFeuille = onglet
    For Each onglet In ActiveWorkbook.Worksheets
        For celA1 = 2 To Sheets.Count
            Sheets(celA1).Activate
            Sheets(celA1).Range("A1") = nomFeuille
        Next celA1
    Next
    Debug.Print (nomFeuille)
    monFichier = Dir

Loop
Application.ScreenUpdating = True 'Facultatif
End Sub

Merci d'avance.

Bonjour,

sans avoir ton fichier c'est toujours difficile de répondre

mais voici une méthode plus simple et plus sûr car elle suivra le changement de nom de l'onglet le cas échéant

Sheets(celA1).Range("A1").FormulaR1C1 = _
        "=RIGHT(CELL(""nomfichier"",RC),LEN(CELL(""nomfichier"",RC))-FIND(""]"",CELL(""nomfichier"",RC)))"

C'est parfait ! Merci encore pour ton aide !

J'ai juste une dernière question pour un souci de boucle.

A la fin de l’exécution de ma boucle tout ce qui devait être fait a été fait, cependant je me retrouve avec l'erreur "L'indice n'appartient pas à la section" sur la ligne :

onglet = Split(monFichier, "_")(2)

Avec le debugger "monFichier" retourne bien tous les fichiers dans la console sans erreur à la fin.

Les fichiers sont tous du même format :

aaa_bbbb-ccc_ddd-eeee_f_ggg_hhh.xlsx

J'avoue ne pas trop comprendre cette erreur.

Ajoute juste

Debug.Print monFichier

juste avant l'instruction en défaut ! et regarde quelle est sa valeur ...

Bonjour,

Merci pour ta réponse, ça m'a permis de trouver d'où venait le problème.

Un fichier était récupérer dans le dossier sans posséder

(2)"_"

Je mets le sujet en résolu.

Rechercher des sujets similaires à "probleme boucle renommer onglet"