Mise à jour automatique du nom des onglets

Bonjour,

j'ai intégré dans un fichier Excel cette ligne de code VBA pour nommer automatiquement les onglets depuis une liste (précision, la cellule A1 de référence est liée à un fichier externe où se trouve la liste de mes onglets) :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Cells(1, 1) <> "" Then ActiveSheet.Name = Cells(1, 1) 'Correspond à la cellule A1

End Sub

ce qui a fonctionné parfaitement.

En revanche, lorsque je modifie le titre des onglets, la mise à jour ne se fait pas automatiquement et il faut que je rentre dans la cellule A1 et la valide pour que la modification se fasse.

Pas de mise à jour non plus en actualisant par les différents moyens (F9, Maj+F9 ou l'icône "Actualiser tout"...).

Pouvez-vous me dire si la mise à jour automatique est possible pour cette fonction et par quelle ligne de programme ?

Je vous remercie d'avance.

Micmar

Salut,

je ne suis pas spécialiste du VBA mais ne faudrait-il pas mettre ce code sur la page où tu effectues les changements et pas dans un module ?

Histoire d'avoir Worksheet_Change au lieu de Workbook_SheetChange.

Bonjour,

Une solution possible en ajoutant ce code dans le module THISWORKBOOK.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Cells(1, 1) <> "" Then
        ActiveSheet.Name = Cells(1, 1) 'Correspond à la cellule A1
    End If
End Sub

Oiseau bleu

Bonjour,

merci pour vos réponses.

@Doux rêveur : le code VBA est bien à insérer dans l'objet ThisWorkbook du fichier dont je veux nommer les onglets.

@oiseaubleu : ce code ne fonctionne pas et la mise à jour ne se fait plus du coup, même en entrant dans la cellule pour valider .

Bonjour,
Un exemple !
Cdlt.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Acell As Range
    Set Acell = Sh.Cells(1)
    If IsEmpty(Acell) Then
        Sh.Name = Sh.CodeName
    Else
        Sh.Name = Acell.Value
    End If
End Sub

Bonjour,

merci pour le retour... mais ça ne fonctionne pas non plus pas de mise à jour automatique

Et si tu rajoutes ThisWorkbook.RefreshAll dans un des codes ci-dessus ?

Bonjour,
Une nouvelle proposition !?
Cdlt.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Acell As Range
    Set Acell = Sh.Cells(1)
    If IsEmpty(Acell) Then
        Sh.Name = Sh.CodeName
    Else
        Sh.Name = Acell.Value
    End If
End Sub

Bonjour bonjour !

alors... la mise à jour "automatique" ne se fait pas ; en revanche, le nom de l'onglet change quand je clique simplement sur l'onglet, ce qui est un moindre mal et surtout beaucoup moins fastidieux que d'aller dans la cellule-cible de chaque feuille et de valider.

Je vais donc rester sur ce code.

Merci Jean-Eric, merci à tous !

PS : je n'ai pas essayé avec les codes donnés précédemment, pour voir si le fait de cliquer sur l'onglet fonctionnait aussi

Rechercher des sujets similaires à "mise jour automatique nom onglets"