Copier entete d'une feuille pour l'appliquer sur une nouvelle feuille
Bonjour le forum
comment ça va ?
je viens vers vous aujourd'hui pour vous presenter mon probleme
j'ai un code qui me permet de créer une nouvelle feuille avec le nom quand la feuille n'exite pas au paravant.
Mais je voudrais que la feuille vienne avec la même entete que ma feuille 1 (que je vais après masquer)
voici mon code, je ne sais pas quelle formule utiliser pour copier l'entete de la feuille 1 qui va de A1 a N3 (trois lignes)
voici mon code d'ajout
Private Sub CommandButton8_Click()
Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
myMonth = (Month(myDate)) ' No du mois précédent
myYear = Year(Date) 'No année
ee = ""
recom:
Verif = False
Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
If Nom = "" Then Exit Sub
For i = 1 To Sheets.Count
If ThisWorkbook.Sheets(i).Name = Nom Then Verif = True
Next
If Verif = True Then
MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
GoTo recom
End If
ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
Unload Me
UserForm1.Show
End Submerci de bien vouloir m'aider
Bonjour,
Ce n'est peut être pas ce que tu attends mais en faisant un simple copier coller avec les formats doit être bon non ?
Range("A1:N3").Select
Selection.Copy
Range("A1").Select
ActiveSheet.Pastebien à toi.
je vois qu'il selectionne tres bien la partie choisie mais il ne colle pas dans la nouvelle feuille.
je vous ai renvoyé le code complet
Private Sub CommandButton9_Click()
Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
myMonth = (Month(myDate)) ' No du mois précédent
myYear = Year(Date) 'No année
ee = ""
recom:
Verif = False
Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
If Nom = "" Then Exit Sub
For i = 1 To Sheets.Count
If Workbooks("C-CLIENT").Sheets(i).Name = Nom Then Verif = True
Next
If Verif = True Then
MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
GoTo recom
End If
Range("A1:N3").Select
Selection.Copy
Range("A1").Select
ActiveSheet.Paste
Workbooks("C-CLIENT").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
Unload Me
UserForm1.Show
End SubOn part sur le principe que ta feuille de référence c'est la feuille 1.
Donc on copie la rangée A1:N3 puis on colle avec format
Le code est le suivant :
Private Sub CommandButton9_Click()
Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
myMonth = (Month(myDate)) ' No du mois précédent
myYear = Year(Date) 'No année
ee = ""
recom:
Verif = False
Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
If Nom = "" Then Exit Sub
For i = 1 To Sheets.Count
If Workbooks("C-CLIENT").Sheets(i).Name = Nom Then Verif = True
Next
If Verif = True Then
MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
GoTo recom
End If
Workbooks("C-CLIENT").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
Workbooks("C-CLIENT").Sheets(1).Activate
Range("A1:N3").Select
Selection.Copy
Workbooks("C-CLIENT").Sheets(Nom).Activate
Range("A1").Select
ActiveSheet.Paste
Unload Me
UserForm1.Show
End Subtu peux optimiser ton code en ajoutant
Sub xx()
Application.ScreenUpdating = False
'Ton code
Application.ScreenUpdating = True
end subça fonctionne bien. Merci. pour l'optimisation, je dois mettre le code ou ? dans le code du userform ?
J'aimerais aussi savoir si on peut ajouter un petit code a votre premier code qui va me permettre d'avoir la même dimension des case de l'entete ? parce que toutes les cases n'ont pas les même tailles dans la feuille 1
Deja merci beaucoup
Ah ben dans ce cas, il suffit de copier les colonnes au lieu de la plage.
Private Sub CommandButton9_Click()
Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
myMonth = (Month(myDate)) ' No du mois précédent
myYear = Year(Date) 'No année
ee = ""
recom:
Verif = False
Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
If Nom = "" Then Exit Sub
For i = 1 To Sheets.Count
If Workbooks("C-CLIENT").Sheets(i).Name = Nom Then Verif = True
Next
If Verif = True Then
MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
GoTo recom
End If
Workbooks("C-CLIENT").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
Application.ScreenUpdating = False
Workbooks("C-CLIENT").Sheets(1).Activate
Columns("A:N").Select
Selection.Copy
Workbooks("C-CLIENT").Sheets(Nom).Activate
Range("A1").Select
ActiveSheet.Paste
Application.ScreenUpdating = True
Unload Me
UserForm1.Show
End Subnon le premier est mieux, il prends juste l'entête, celui la prend toute la feuille de A a N
pourtant je veux juste l'entete.
Je voulais juste que les dispositions soit les même, les tailles au fait
Private Sub CommandButton9_Click()
Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
myMonth = (Month(myDate)) ' No du mois précédent
myYear = Year(Date) 'No année
ee = ""
recom:
Verif = False
Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
If Nom = "" Then Exit Sub
For i = 1 To Sheets.Count
If Workbooks("C-CLIENT").Sheets(i).Name = Nom Then Verif = True
Next
If Verif = True Then
MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
GoTo recom
End If
Workbooks("C-CLIENT").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
Application.ScreenUpdating = False
Workbooks("C-CLIENT").Sheets(1).Activate
Range("A1:N3").Select
Selection.Copy
Workbooks("C-CLIENT").Sheets(Nom).Activate
Range("A1").Select
ActiveSheet.Paste
'On copie colle uniquement le format des colonnes
Workbooks("C-CLIENT").Sheets(1).Activate
Columns("A:N").Select
Selection.Copy
Workbooks("C-CLIENT").Sheets(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.ScreenUpdating = True
Unload Me
UserForm1.Show
End Subc'est plus que parfait
grand merci, mais ça ne marche pas pour le deuxieme bouton qui doit ouvrir les feuilles du classeur principal.
on me met l'erreur a ce niveau
Private Sub CommandButton9_Click()
Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
myMonth = (Month(myDate)) ' No du mois précédent
myYear = Year(Date) 'No année
ee = ""
recom:
Verif = False
Nom = InputBox("Définissez le nom du nouveau svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
If Nom = "" Then Exit Sub
For i = 1 To Sheets.Count
If Workbooks("AVIONS").Sheets(i).Name = Nom Then Verif = True
Next
If Verif = True Then
MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
GoTo recom
End If
Workbooks("AVIONS").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
Application.ScreenUpdating = False
Workbooks("AVIONS").Sheets(1).Activate
Range("A1:N3").Select
Selection.Copy
Workbooks("AVIONS").Sheets(Nom).Activate
Range("A1").Select
ActiveSheet.Paste
'On copie colle uniquement le format des colonnes
Workbooks("AVIONS").Sheets(1).Activate
Columns("A:N").Select
Selection.Copy
Workbooks("AVIONS").Sheets(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.ScreenUpdating = True
Unload Me
UserForm1.Show
End Subj'ai juste changer les noms de feuilles
j'ai l'impression que les deux codes ne peuvent pas marcher ensemble, parce que lorsque je change l'autre passe et l'autre nom.
Voici les codes de mon bouton 8 et 9 qui sont censé ajouter des feuilles avec nom a chaque classeurs
Private Sub CommandButton8_Click()
Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
myMonth = (Month(myDate)) ' No du mois précédent
myYear = Year(Date) 'No année
ee = ""
recom:
Verif = False
Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
If Nom = "" Then Exit Sub
For i = 1 To Sheets.Count
If Workbooks("C-CLIENT").Sheets(i).Name = Nom Then Verif = True
Next
If Verif = True Then
MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
GoTo recom
End If
Workbooks("C-CLIENT").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
Application.ScreenUpdating = False
Workbooks("C-CLIENT").Sheets(1).Activate
Range("A1:Q3").Select
Selection.Copy
Workbooks("C-CLIENT").Sheets(Nom).Activate
Range("A1").Select
ActiveSheet.Paste
'On copie colle uniquement le format des colonnes
Workbooks("C-CLIENT").Sheets(1).Activate
Columns("A:Q").Select
Selection.Copy
Workbooks("C-CLIENT").Sheets(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.ScreenUpdating = True
Unload Me
UserForm1.Show
End SubPrivate Sub CommandButton9_Click()
Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
myMonth = (Month(myDate)) ' No du mois précédent
myYear = Year(Date) 'No année
ee = ""
recom:
Verif = False
Nom = InputBox("Définissez le nom du nouveau svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
If Nom = "" Then Exit Sub
For i = 1 To Sheets.Count
If Workbooks("AVIONS").Sheets(i).Name = Nom Then Verif = True
Next
If Verif = True Then
MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
GoTo recom
End If
Workbooks("AVIONS").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
Application.ScreenUpdating = False
Workbooks("AVIONS").Sheets(1).Activate
Range("A1:P3").Select
Selection.Copy
Workbooks("AVIONS").Sheets(Nom).Activate
Range("A1").Select
ActiveSheet.Paste
'On copie colle uniquement le format des colonnes
Workbooks("AVIONS").Sheets(1).Activate
Columns("A:P").Select
Selection.Copy
Workbooks("AVIONS").Sheets(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.ScreenUpdating = True
Unload Me
UserForm1.Show
End Subje suis perdu
Bonjour,
peux tu me montrer le fichier ?
il y a un soucis dans l'ajout des feuilles, le bouton est representé par des + sur le userform.
l'ouverture du classeur AVIONS ouvre automatiquement l'autre
les deux boutons fonctionnent parfaitement chez vous ? chez moi non
j'ajoute parfaitement une feuille dans C-CLIENT avec le bouton plus devant le flight route mais avec le bouton devant le aircraft ça me met une erreur d'exécution '424' Objet requis
la ligne soulignée est For i = 1 To .Worksheets.Count
a vous
merci de rester avec moi
j'ai essayé de mettre le code (qui fonctionne) dans l'autre en adaptant mais ça me genere encore une erreur a ce niveau
une erreur d'execution '1004' qui me dit quil est impossible de lire la proprité Add de la classe Sheet