OVH Cloud OVH Cloud

ajouter et nommer automatiquement une nouvelle feuille

7 réponses
Avatar
stac
Bonjour,

Alors la, si quelqu'un trouve, chapeau...
ce que je voudrais faire :
quand un utilisateur remplit une case de la colonne B, en y rentrant un
chiffre (mettons '4567'), alors des qu'il a finit une nouvelle feuille
apparait dans le classeur, et elle s'appelle '4567'.

Raffinement supreme : si la case B remplie est la 12eme, la case A12
contenant le nombre '5', la feuille peut etre nommee automatiquement '5 :
4567' ?
faisable ou non ?
merci de vos reponses

Stac

7 réponses

Avatar
anonymousA
Bonjour,

A mettre dans le module de feuille sur l'evenement

Private Sub Worksheet_Change(ByVal Target As Range)

Application.DisplayAlerts = False
On Error Resume Next
If Not Intersect(Target, Range("B1:B65536")) Is Nothing And
Target.Cells.Count = 1 Then
If Target.Address(0, 0) = "B12" And Not IsEmpty(Target.Offset(0,
-1)) Then
Sheets.Add(, ActiveSheet).Name = Target.Offset(0, -1) &
Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
Else
Sheets.Add(, ActiveSheet).Name = Target.Offset(0, -1) &
Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
End If
End If
Target.Parent.Activate
Application.DisplayAlerts = True

End Sub

A+


stac wrote:
Bonjour,

Alors la, si quelqu'un trouve, chapeau...
ce que je voudrais faire :
quand un utilisateur remplit une case de la colonne B, en y rentrant un
chiffre (mettons '4567'), alors des qu'il a finit une nouvelle feuille
apparait dans le classeur, et elle s'appelle '4567'.

Raffinement supreme : si la case B remplie est la 12eme, la case A12
contenant le nombre '5', la feuille peut etre nommee automatiquement '5 :
4567' ?
faisable ou non ?
merci de vos reponses

Stac


Avatar
anonymousA
Erreur de copier-coller

Private Sub Worksheet_Change(ByVal Target As Range)

Application.DisplayAlerts = False
On Error Resume Next
If Not Intersect(Target, Range("B1:B65536")) Is Nothing And
Target.Cells.Count = 1 Then
If Target.Address(0, 0) = "B12" And Not IsEmpty(Target.Offset(0,
-1)) Then
Sheets.Add(, ActiveSheet).Name = Target.Offset(0, -1) &
Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
Else
Sheets.Add(, ActiveSheet).Name = Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
End If
End If
Target.Parent.Activate
Application.DisplayAlerts = True

End Sub

A+


anonymousA wrote:
Bonjour,

A mettre dans le module de feuille sur l'evenement

Private Sub Worksheet_Change(ByVal Target As Range)

Application.DisplayAlerts = False
On Error Resume Next
If Not Intersect(Target, Range("B1:B65536")) Is Nothing And
Target.Cells.Count = 1 Then
If Target.Address(0, 0) = "B12" And Not IsEmpty(Target.Offset(0,
-1)) Then
Sheets.Add(, ActiveSheet).Name = Target.Offset(0, -1) &
Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
Else
Sheets.Add(, ActiveSheet).Name = Target.Offset(0, -1) &
Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
End If
End If
Target.Parent.Activate
Application.DisplayAlerts = True

End Sub

A+


stac wrote:
Bonjour,

Alors la, si quelqu'un trouve, chapeau...
ce que je voudrais faire :
quand un utilisateur remplit une case de la colonne B, en y rentrant un
chiffre (mettons '4567'), alors des qu'il a finit une nouvelle feuille
apparait dans le classeur, et elle s'appelle '4567'.

Raffinement supreme : si la case B remplie est la 12eme, la case A12
contenant le nombre '5', la feuille peut etre nommee automatiquement '5 :
4567' ?
faisable ou non ?
merci de vos reponses

Stac




Avatar
Tschuß
Pas mieux !


Erreur de copier-coller

Private Sub Worksheet_Change(ByVal Target As Range)

Application.DisplayAlerts = False
On Error Resume Next
If Not Intersect(Target, Range("B1:B65536")) Is Nothing And
Target.Cells.Count = 1 Then
If Target.Address(0, 0) = "B12" And Not IsEmpty(Target.Offset(0,
-1)) Then
Sheets.Add(, ActiveSheet).Name = Target.Offset(0, -1) &
Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
Else
Sheets.Add(, ActiveSheet).Name = Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
End If
End If
Target.Parent.Activate
Application.DisplayAlerts = True

End Sub

A+


anonymousA wrote:
Bonjour,

A mettre dans le module de feuille sur l'evenement

Private Sub Worksheet_Change(ByVal Target As Range)

Application.DisplayAlerts = False
On Error Resume Next
If Not Intersect(Target, Range("B1:B65536")) Is Nothing And
Target.Cells.Count = 1 Then
If Target.Address(0, 0) = "B12" And Not IsEmpty(Target.Offset(0,
-1)) Then
Sheets.Add(, ActiveSheet).Name = Target.Offset(0, -1) &
Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
Else
Sheets.Add(, ActiveSheet).Name = Target.Offset(0, -1) &
Target.Value
If Err.Number <> 0 Then ActiveSheet.Delete
End If
End If
Target.Parent.Activate
Application.DisplayAlerts = True

End Sub

A+


stac wrote:
Bonjour,

Alors la, si quelqu'un trouve, chapeau...
ce que je voudrais faire :
quand un utilisateur remplit une case de la colonne B, en y rentrant un
chiffre (mettons '4567'), alors des qu'il a finit une nouvelle feuille
apparait dans le classeur, et elle s'appelle '4567'.

Raffinement supreme : si la case B remplie est la 12eme, la case A12
contenant le nombre '5', la feuille peut etre nommee automatiquement '5 :
4567' ?
faisable ou non ?
merci de vos reponses

Stac






Avatar
stac
Waaaaaa quelle classe !!
Merci !
Le pire c'est que j'arrive a comprendre ce que ca fait... :)
je peux remplacer le :
'Target.Offset(0, -1) & Target.Value'
par :
'Target.Offset(0, -1) & " : " & Target.Value
pour qu'il y ait un ':' entre les deux chiffres repris dans le nom de la
nouvelle feuille ?

sinon par contre bon newbie que je suis, il faut copier coller tout ceci
dans le 'module de feuille de l'evenement'... clairement, c'est ou ca ?


Stac
Avatar
anonymousA
tu ne peux pas ajouter le ":" car c'est un caractère interdit pour un
nom de feuille.De toute façon, si tu le faisais , compte tenu de
l'écriture de la macro, la feuille ne serait pas créée.
Sinon,pour mettre la macro, il fait aller dans l'environnement de VBE (
Alt+F11) , repérer dans la fenêtre Explorateur de Projet le projet (
chercher le nom du fichier ) puis dans ce projet chercher dans les
objets Microsoft Excel la feuille qui doit servir à écrire les noms
de feuille.Une fois cette feuille repérée, double cliquer sur
celle-ci t'neverra dans la fenêtre des procédures et c'est là que tu
mets l'intégralité de ce que je t'ai envoyé.
A partir de là, ca fonctionne

A+

stac wrote:
Waaaaaa quelle classe !!
Merci !
Le pire c'est que j'arrive a comprendre ce que ca fait... :)
je peux remplacer le :
'Target.Offset(0, -1) & Target.Value'
par :
'Target.Offset(0, -1) & " : " & Target.Value
pour qu'il y ait un ':' entre les deux chiffres repris dans le nom de la
nouvelle feuille ?

sinon par contre bon newbie que je suis, il faut copier coller tout ceci
dans le 'module de feuille de l'evenement'... clairement, c'est ou ca ?


Stac


Avatar
stac
merci ca marche nickel ! j'ai rajouté des & " " & pour que les deux cases
reprises dans le titre de la feuille ne soit pas collées.
j'ai aussi repris la commande pour que le nom de la feuille tienne en compte
la case '-1' horizontal pour toutes les cases B et pas seulement la B12.
c'est peut etre pas le code le mieux, mais ca marche :)

Merci !


tu ne peux pas ajouter le ":" car c'est un caractère interdit pour un
nom de feuille.De toute façon, si tu le faisais , compte tenu de
l'écriture de la macro, la feuille ne serait pas créée.
Sinon,pour mettre la macro, il fait aller dans l'environnement de VBE (
Alt+F11) , repérer dans la fenêtre Explorateur de Projet le projet (
chercher le nom du fichier ) puis dans ce projet chercher dans les
objets Microsoft Excel la feuille qui doit servir à écrire les noms
de feuille.Une fois cette feuille repérée, double cliquer sur
celle-ci t'neverra dans la fenêtre des procédures et c'est là que tu
mets l'intégralité de ce que je t'ai envoyé.
A partir de là, ca fonctionne


Avatar
stac
euh, je voudrais pas abuser, mais bon...
est ce qu'il est possible que la feuille ainsi rajoutée soit identique a un
autre feuille ? cela reviendrait a introduire un copier coller automatique de
la totalité d'une autre feuille (toujours la meme)