Je bloque sur le renommage automatique des feuilles dans certaines conditions. Petite explication mon classeur comporte initialement 3 onglets Tableau de bord, Synthèse et Feuille Type. Dès que je rempli la col C et enter de la feuille Synthèse une feuille est créer et ainsi de suite.
Mon problème est le suivant je n’arrive pas à renommer les feuilles en fonction de certaines cellules de la feuille TB. Je souhaite renommer les feuilles correspondantes dès que j’insère une date dans les cellules E9 à E39 du TB. Le nom de l’onglet doit faire référence aux cellules A2 et A3 de ce même onglet.
Bonjour Nando,
Lorsque vous faites Call Creer_Supprimer(Target) c'est la valeur de la cellule target qui est utilisée, non son adresse.
Dans la PJ j'ai fait au niveau de Worksheet_Change :
VB:
Call Creer_Supprimer(Target.Address)
Puis au niveau de Creer_Supprimer :
Code:
Sub Creer_Supprimer(Adresse)
puis
Set Valeur = Sheets("Synthèse").Range(Adresse)
De cette façon Valeur représente une adresse, et non une valeur.
Cela donne quand même une erreur sur Numérodematricule = Valeur.Offset(0, 9) car Numérodematricule est déclaré comme Long alors que la valeur remontée est "Numérodematricule", donc une chaine.
je ne suis pas sur que c'est ce que vous vouliez faire.
Vous voulez copier la cellule de la ligne 4, on celle d'en dessous ?
Ca je vous laisse faire, vous irez beaucoup plus vite que moi.
( A noter que la macro doit pouvoir être optimisée, si j'ai bien compris avec :
VB:
Sub Creer_Supprimer_ESSAI(Adresse)
Dim Nom As String, dl As Long, C As Long, valeur As Range
Set valeur = Sheets("Synthèse").Range(Adresse)
Nom = valeur.Offset(0, -2)
If FeuilleExiste(Nom) And valeur = "" Then
Application.DisplayAlerts = False
Sheets(Nom).Delete
Application.DisplayAlerts = True
Else
If Not FeuilleExiste(Nom) Then
Sheets("Feuille Type").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Nom
dl = Sheets(Nom).Range("Bz" & Rows.Count).End(xlUp).Row + 1
For C = 1 To 48
Sheets(Nom).Cells(dl, C) = valeur.Offset(0, C - 3)
Next L
End If
End If
End Sub
car toutes les colonnes se suivent tant en lecture qu'en écriture.
J'ai mis ça dans Essai et est appelée Creer_Supprimer_ESSAI )
Bonjour Nando,
Lorsque vous faites Call Creer_Supprimer(Target) c'est la valeur de la cellule target qui est utilisée, non son adresse.
Dans la PJ j'ai fait au niveau de Worksheet_Change :
VB:
Call Creer_Supprimer(Target.Address)
Puis au niveau de Creer_Supprimer :
Code:
Sub Creer_Supprimer(Adresse)
puis
Set Valeur = Sheets("Synthèse").Range(Adresse)
De cette façon Valeur représente une adresse, et non une valeur.
Cela donne quand même une erreur sur Numérodematricule = Valeur.Offset(0, 9) car Numérodematricule est déclaré comme Long alors que la valeur remontée est "Numérodematricule", donc une chaine.
je ne suis pas sur que c'est ce que vous vouliez faire.
Vous voulez copier la cellule de la ligne 4, on celle d'en dessous ?
Ca je vous laisse faire, vous irez beaucoup plus vite que moi.
( A noter que la macro doit pouvoir être optimisée, si j'ai bien compris avec :
VB:
Sub Creer_Supprimer_ESSAI(Adresse)
Dim Nom As String, dl As Long, C As Long, valeur As Range
Set valeur = Sheets("Synthèse").Range(Adresse)
Nom = valeur.Offset(0, -2)
If FeuilleExiste(Nom) And valeur = "" Then
Application.DisplayAlerts = False
Sheets(Nom).Delete
Application.DisplayAlerts = True
Else
If Not FeuilleExiste(Nom) Then
Sheets("Feuille Type").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Nom
dl = Sheets(Nom).Range("Bz" & Rows.Count).End(xlUp).Row + 1
For C = 1 To 48
Sheets(Nom).Cells(dl, C) = valeur.Offset(0, C - 3)
Next L
End If
End If
End Sub
car toutes les colonnes se suivent tant en lecture qu'en écriture.
J'ai mis ça dans Essai et est appelée Creer_Supprimer_ESSAI )
Bonjour Merci pour votre aide mais malheureusement cela ne fonctionne pas. En entrant une date dans la cellule E9 (par exemple) cela ne modifie pas le nom de la feuille créer. Les valeurs des cellules à reporter sont celle de cette même feuille (Concaténer A2 &A3)
Comme indiqué je n'ai fait sauter que le verrou de la Target qui posait problème.
Je n'ai pas compris ce que vous vouliez copier ni quelles cellules A2 et a3 de quelle feuille vous vouliez utiliser.
Préciser.
Comme indiqué je n'ai fait sauter que le verrou de la Target qui posait problème.
Je n'ai pas compris ce que vous vouliez copier ni quelles cellules A2 et a3 de quelle feuille vous vouliez utiliser.
Préciser.
Je pense que le plus simple serait de tester mon tableau, en insérant un 1 et enter dans la col C à partir de C5 de la feuille de synthèse ceci va créer un nouvelle feuille qui comporte le nom VD 229915. Du moment que dans la feuille tableau de bord j'insère une date dans la cellule E9 (Même ligne que VD 229915 Cell C9) la feuille portant le nom VD 229915 devienne VD229915Annulé.
Dernière tentative.
1- Dans Worksheet_Change c'est C4:C50 et non C3:C50, sinon erreur si clic en A3
2- Dans dl = Sheets(Nom).Range("Bz" & Rows.Count).End(xlUp).Row + 1, à priori c'est "B" et non "Bz"
3- Les Immat sont VD+espace+Nombre, j'ai rajouté l'espace sinon, évidemment, ça coince.
4- J'ai rajouté pour accélérer, sinon ça rame :
VB:
Application.ScreenUpdating = False ' Fige l'écran
Application.Calculation = xlCalculationManual ' Mettre en calcul manuel
Application.EnableEvents = False ' Supprimer tout event
Application.DisplayAlerts = False ' Supprimer les alertes
5- J'ai simplifié à mort le module Creer_Supprimer par une boucle For Next
Par contre la cellule A3 de la feuille copiée n'est pas utilisée, là, j'ai pas compris. Enrichir le code.
Dans Synthèse il faut remettre formules en colonnes A, ici j'ai fait coller valeurs.
Il y avait quand même pas mal d'erreurs. A vous de jouer pour le reste.
La prochaine fois, soyez quand même plus explicite dans votre demande. N'oubliez pas que le contributeur ne connait pas votre fichier. Alors A2:A3 ne veut rien dire si vous ne précisez pas de quelle feuille par ex.
Dernière tentative.
1- Dans Worksheet_Change c'est C4:C50 et non C3:C50, sinon erreur si clic en A3
2- Dans dl = Sheets(Nom).Range("Bz" & Rows.Count).End(xlUp).Row + 1, à priori c'est "B" et non "Bz"
3- Les Immat sont VD+espace+Nombre, j'ai rajouté l'espace sinon, évidemment, ça coince.
4- J'ai rajouté pour accélérer, sinon ça rame :
VB:
Application.ScreenUpdating = False ' Fige l'écran
Application.Calculation = xlCalculationManual ' Mettre en calcul manuel
Application.EnableEvents = False ' Supprimer tout event
Application.DisplayAlerts = False ' Supprimer les alertes
5- J'ai simplifié à mort le module Creer_Supprimer par une boucle For Next
Par contre la cellule A3 de la feuille copiée n'est pas utilisée, là, j'ai pas compris. Enrichir le code.
Dans Synthèse il faut remettre formules en colonnes A, ici j'ai fait coller valeurs.
Il y avait quand même pas mal d'erreurs. A vous de jouer pour le reste.
La prochaine fois, soyez quand même plus explicite dans votre demande. N'oubliez pas que le contributeur ne connait pas votre fichier. Alors A2:A3 ne veut rien dire si vous ne précisez pas de quelle feuille par ex.