Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1671 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA-EXCEL 2003] Dupliquer une feuille complete [DONE]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA-EXCEL 2003] Dupliquer une feuille complete [DONE]

n°1245017
sakuraba
Posté le 14-11-2005 à 10:44:29  profilanswer
 

http://img381.imageshack.us/img381/8425/sanstitre26su.th.jpg
 
Bonjour,
Je voudrais dupliquer une feuille car le columns.copy ne me copie pas tout  
( il me manque les boutons et la protection des cellules verrouillées )
 
 

Code :
  1. Sheets("Base" ).Columns.Copy Sheets("nlle_feuille" ).Columns

Message cité 1 fois
Message édité par sakuraba le 14-11-2005 à 15:06:41
mood
Publicité
Posté le 14-11-2005 à 10:44:29  profilanswer
 

n°1245034
watashi
La démotivation : JAMAIS !
Posté le 14-11-2005 à 11:00:05  profilanswer
 

Salut sakuraba,
 

Code :
  1. Sheets("nom_de_ta_feuille" ).Select
  2.     Sheets("Masque" ).Copy After:=Sheets(3) ' ou before:sheets(1)

Cela te crée automatiquement une copie exacte avec toutes les macros, les commentaires, les bouttons... de ta feuille.
Pour la renomer ensuite :

Code :
  1. ActiveSheet.Name = "Nouveau_Nom"

bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1245050
sakuraba
Posté le 14-11-2005 à 11:27:47  profilanswer
 

Code :
  1. Sub RecupNomOnglet()
  2.     Dim WsName As String
  3.     WsName = ActiveSheet.Name
  4.      Sheets("Base" ).Columns.Copy Sheets(WsName).Columns
  5.     ' Entre le nom du chantier ds la cellule A1
  6.      Sheets(WsName).Range("A1" ).Value = WsName
  7. End Sub


 
j'arrive pas à l'integrer là dedans
si je remplace Sheets("Base" ).Columns.Copy Sheets(WsName).Columns par 'Sheets("Base" ).Copy Sheets(WsName)
bah ça crée une feuille base(2) et une avec mon wsname

Message cité 1 fois
Message édité par sakuraba le 14-11-2005 à 11:35:21
n°1245068
watashi
La démotivation : JAMAIS !
Posté le 14-11-2005 à 11:56:34  profilanswer
 

Re,
dans cette fonction tu utilises columns.copy ça te recopie toutes tes colones dans une feuille existante WsName. Avec cette copie tu perds tout ce qui est directement attaché à la feuille (macros worsheet_Activate, commandbutton...)  

sakuraba a écrit :

Code :
  1. Sub RecupNomOnglet()
  2.     Dim WsName As String
  3.     WsName = ActiveSheet.Name
  4.      Sheets("Base" ).Columns.Copy Sheets(WsName).Columns
  5.     ' Entre le nom du chantier ds la cellule A1
  6.      Sheets(WsName).Range("A1" ).Value = WsName
  7. End Sub



Si tu fais :

Code :
  1. Sub RecupNomOnglet()
  2.     Dim WsName As String
  3.     WsName= "Nouvelle feuille"
  4.      Sheets("Base" ).Copy After:=Sheets(3)
  5.     ' Entre le nom du chantier ds la cellule A1
  6.      Activesheet.Name = WsName
  7.      Sheets(WsName).Range("A1" ).Value = WsName
  8. End Sub

Ca te crée directement ta nouvelle feuille, il faut que tu trouves dans la code juste avant ce qui t'a permis d'avoir la nouvelle feuille et l'enlever.
 
:)
 
Edit : le sheets(X). copy ne marche pas sur une feuille déjà existante.

Message cité 1 fois
Message édité par watashi le 14-11-2005 à 11:58:01

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1245080
sakuraba
Posté le 14-11-2005 à 12:13:55  profilanswer
 

nan
je voudrais utiliser ma fonction plutot car ça me fait changer trop de code sinon
 

Code :
  1. Sub RecupNomOnglet()
  2.     Dim WsName As String
  3.         WsName = ActiveSheet.Name
  4.     Sheets("Base" ).Copy Sheets(WsName)
  5.    ' Entre le nom du chantier ds la cellule A1
  6.       Sheets(WsName).Range("A1" ).Value = WsName
  7. End Sub


 
http://img398.imageshack.us/img398/313/sanstitre23lv.jpg
 
 
base (2) contient tout ce que je veux sauf le bon nom de feuille et son son ds la cellule A1

Message cité 1 fois
Message édité par sakuraba le 14-11-2005 à 12:15:54
n°1245137
watashi
La démotivation : JAMAIS !
Posté le 14-11-2005 à 13:57:43  profilanswer
 

Re

sakuraba a écrit :

Je voudrais dupliquer une feuille car le columns.copy ne me copie pas tout  
( il me manque les boutons et la protection des cellules verrouillées )

Si tu veux tous les boutons et toutes les macros... Tu n'as pas d'autre choix que de copier le feuille avec Sheets(X).copy Si tu utilises column.copy alors

watashi a écrit :

tu perds tout ce qui est directement attaché à la feuille (macros worsheet_Activate, commandbutton...)

Et comme :

sakuraba a écrit :

base (2) contient tout ce que je veux sauf le bon nom de feuille et son son ds la cellule A1

Et que :

watashi a écrit :

Edit : le sheets(X). copy ne marche pas sur une feuille déjà existante.


 

sakuraba a écrit :

nan
je voudrais utiliser ma fonction plutot car ça me fait changer trop de code sinon


Ben tant pis faudra quand même...


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1245161
sakuraba
Posté le 14-11-2005 à 14:22:53  profilanswer
 

je comprends rien ...  :??:  
 

Code :
  1. ' creation d'un chantier via une feuille
  2. Sub NomOnglet()
  3.   If NomChantier.Value = "" Then Exit Sub
  4.   On Error Resume Next
  5.   Application.ScreenUpdating = True
  6.   ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
  7.   ActiveSheet.Name = NomChantier.Value
  8.   Call RecupNomOnglet
  9.   If Err <> 0 Then
  10.     Err.Clear
  11.     With Application
  12.         .ScreenUpdating = True
  13.         .DisplayAlerts = False
  14.     End With
  15.     ActiveSheet.Delete
  16.     msg = "Le nom de feuille que vous avez tapé n'est pas valide !" _
  17.         & vbCrLf
  18.     msg = msg & vbCrLf
  19.     msg = msg & "- Vérifiez que le nom de la feuille ne dépasse " _
  20.         & "pas 31 caractères" & vbCrLf
  21.     msg = msg & "- Vérifiez que le nom de la feuille ne contient " _
  22.         & "aucun des caractères suivants :" & vbCrLf
  23.     msg = msg & "  \ / : ? * [ ou ]" & vbCrLf
  24.     msg = msg & "- Vérifiez qu'une feuille du classeur ne possède " _
  25.         & "pas déjà un nom identique" & vbCrLf
  26.     Reponse = MsgBox(msg, , "Saisie invalide" )
  27.   End If
  28. End Sub


Code :
  1. ' Recuperation du nom de la feuille active et formatage des cellules
  2. Sub RecupNomOnglet()
  3.      Dim WsName As String
  4.      WsName = "Nouvelle feuille"
  5.      Sheets("Base" ).Copy After:=Sheets(3)
  6.      ' Entre le nom du chantier ds la cellule A1
  7.       ActiveSheet.Name = WsName
  8.      Sheets(WsName).Range("A1" ).Value = WsName
  9.      
  10. End Sub

Message cité 1 fois
Message édité par sakuraba le 14-11-2005 à 14:23:22
n°1245259
watashi
La démotivation : JAMAIS !
Posté le 14-11-2005 à 15:03:57  profilanswer
 

sakuraba a écrit :

je comprends rien ...  :??:

Ca me le fait souvent aussi ;)
 
Là c'est ta partie de code qui te permet de créer la feuille et de la renomer.

Code :
  1. ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
  2.   ActiveSheet.Name = NomChantier.Value
  3.   Call RecupNomOnglet


il te suffit de la remplacer par :

Code :
  1. Call CreationOnglet

avec :

Code :
  1. Sub CreationOnglet()
  2.     Sheets("Base" ).Copy After:=Sheets(Worksheets.Count)
  3.     WsName = Nomchantier.Value
  4.     ActiveSheet.Name = WsName
  5.     Range("A1" ).Value = WsName
  6. End Sub


Sachant que tu peux très bien placer ces lignes dans le code principal directement.


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1245265
sakuraba
Posté le 14-11-2005 à 15:05:33  profilanswer
 

voila j'ai trouvé grâce à toi merci encore  
 

Code :
  1. Sub NomOnglet()
  2.   If NomChantier.Value = "" Then Exit Sub
  3.   On Error Resume Next
  4.   Application.ScreenUpdating = True
  5.   ActiveWorkbook.Sheets("Base" ).Copy after:=Worksheets(Worksheets.Count)
  6.   ActiveSheet.Name = NomChantier.Value
  7.   Sheets(NomChantier.Value).Unprotect
  8.   ActiveSheet.Range("A1" ).Value = NomChantier.Value
  9.   Sheets(NomChantier.Value).Protect
  10. If Err <> 0 Then
  11.     Err.Clear
  12.     With Application
  13.         .ScreenUpdating = True
  14.         .DisplayAlerts = False
  15.     End With
  16.     ActiveSheet.Delete
  17.     msg = "Le nom de feuille que vous avez tapé n'est pas valide !" _
  18.         & vbCrLf
  19.     msg = msg & vbCrLf
  20.     msg = msg & "- Vérifiez que le nom de la feuille ne dépasse " _
  21.         & "pas 31 caractères" & vbCrLf
  22.     msg = msg & "- Vérifiez que le nom de la feuille ne contient " _
  23.         & "aucun des caractères suivants :" & vbCrLf
  24.     msg = msg & "  \ / : ? * [ ou ]" & vbCrLf
  25.     msg = msg & "- Vérifiez qu'une feuille du classeur ne possède " _
  26.         & "pas déjà un nom identique" & vbCrLf
  27.     Reponse = MsgBox(msg, , "Saisie invalide" )
  28.   End If
  29.   Application.DisplayAlerts = True
  30.  
  31. End Sub


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA-EXCEL 2003] Dupliquer une feuille complete [DONE]

 

Sujets relatifs
urgent : Pb de macro VBA[VS 2003] Comment afficher les erreurs de codage en live (cf Eclipse)
[Excel] Simulation de lois normalesChargement d'une feuille grace a une variable
Création d'une fonction sous ExcelProblèmes pour envoyer fichiers excel avec javaMail
[MACRO excel / resolu ] creation d hyperliens amenant a des feuilletsExcel VBA configuration des marges
ouvrir un fichier excel depuis Access en VBA, encore une petite chose 
Plus de sujets relatifs à : [VBA-EXCEL 2003] Dupliquer une feuille complete [DONE]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR