Travail sur onglet

steve74

XLDnaute Nouveau
Bonjour,

Je travail actuel sur un classeur avec x onglets portant les noms "lot1", "lot2"... et d'autres onglets..

Dans un autre onglet je défini le nombre de lots et leurs noms. Sur la cellule du nombre j'affiche le nombre d'onglet correspondant.

J'aimerai mettre à jour le nom des onglets avec le noms de chaque cellule, mais par contre je fais des mises à jours dans l'onglet renommé (toujours par une macro) alors je pense que ma macro va planter car elle ne va pas trouver les feuilles !!!

Et si la cellule nom est vide le nom retourne sur Lot1 si c'est le premier nom etc...

Quelqu'un peu m'aider?

Merci
 

Staple1600

XLDnaute Barbatruc
Re : Travail sur onglet

Bonsoir


A titre d'inspiration (peut-etre)
Code:
Sub test()
Dim r1 As Range
Set r1 = Sheets(1).Range("A1")
If Not IsEmpty(r1) Then
Sheets(1).Name = r1
Else
MsgBox "Le nom de la feuille n'est pas renseignée" _
& Chr(13) & "Saisir un nom dans la cellule " & r1.Address(False, False)
End If
End Sub

Une amélioration
Code:
Sub test3()
Dim ws As Worksheet
Dim Nnomf As Range
Set Nnomf = Sheets(1).[A1]
    For Each ws In Worksheets
        If ws.Name = Nnomf Or IsEmpty(Nnomf) Then
            MsgBox "Une feuille avec le nom : " & Nnomf.Value _
            & Chr(13) & "existe déjà dans ce classeur, (ou la cellule A1 est vide)." _
            & Chr(13) & Chr(13) & "Saisir un nouveau nom dans la cellule : " _
            & Nnomf.Address(False, False), vbInformation
            Exit Sub
        End If
    Next
ActiveSheet.Name = Nnomf
End Sub

Et une dernière
Code:
Sub test4()
Dim ws As Worksheet, Nnomf As Range
Set Nnomf = Sheets(1).[A1]
If IsEmpty(Nnomf) Then
MsgBox "Attention, la cellule A1 est vide, veuillez saisir le nouveau nom en A1", vbCritical
Exit Sub
End If
    For Each ws In Worksheets
        If ws.Name = Nnomf Then
            MsgBox "Une feuille avec le nom : " & Nnomf.Value _
            & Chr(13) & "existe déjà dans ce classeur." _
            & Chr(13) & Chr(13) & "Saisir un nouveau nom dans la cellule : " _
            & Nnomf.Address(False, False), vbInformation
            Exit Sub
        End If
    Next
ActiveSheet.Name = Nnomf
End Sub
 
Dernière édition:

steve74

XLDnaute Nouveau
Re : Travail sur onglet

Merci beaucoup pour la réponse. J'espère pouvoir débloquer mon soucis. Je suis un peu novice sur excel...faut bien commencer un jour...

Par contre j'ai une autre question, ou faut il integrer le code..dans un module ou dans le code de la feuille. De plus j'aimerai que la macro se déclenche à la fin de la saisie de la cellule (sur Enter quoi?) mais je ne ma souviens plus de la fonction

Merci
 

Staple1600

XLDnaute Barbatruc
Re : Travail sur onglet

Bonsoir

Une modification qui supprime la boite de message

La macro est dans un module
(juste pour pouvoir tester)

Sub test5()
Dim ws As Worksheet, Nnomf As Range
Set Nnomf = Sheets(1).[A1]
If IsEmpty(Nnomf) Then
ActiveSheet.Name = ActiveSheet.Name
Exit Sub
End If
For Each ws In Worksheets
If ws.Name = Nnomf Then
MsgBox "Une feuille avec le nom : " & Nnomf.Value _
& Chr(13) & "existe déjà dans ce classeur." _
& Chr(13) & Chr(13) & "Saisir un nouveau nom dans la cellule : " _
& Nnomf.Address(False, False), vbInformation
Exit Sub
End If
Next
ActiveSheet.Name = Nnomf
End Sub

Un autre essai ( a mettre dans le code de la feuille)
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On error Resume next
If Not IsEmpty(Range("A1")) Then
Me.Name = Range("A1")
Else
Me.Name = "Feuil1"
End If
End Sub
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
215

Statistiques des forums

Discussions
312 317
Messages
2 087 189
Membres
103 493
dernier inscrit
Vidal Salvador