Copier/coller une feuille

Résolu
mariek888 -  
 mariek888 -
Bonjour,

Je souhaiterai copier une feuille dans un nouvel onglet mais avec le mois et la date du jour.
Mais mon code ne marche pas :

Sub Copie_Modele()

Sheets("DPE").Copy , Before:=Sheets("DPE")
ActiveSheet.Name = Format(Date, "mm yyyy")
Range("B13").Select
End Sub

5 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut,
    Qu'est ce qui ne fonctionne pas dans ton code?

    Sub Copie_Modele() 
    Sheets("DPE").Copy , Before:=Sheets("DPE") 
    ActiveSheet.Name = Format(Date, "dd mmmm") 
    End Sub
    0
  2. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    Bonjour,

    quel est exactement ton problème ? En exécutant ta macro j'obtiens une feuille "07 2010", copie de la feuille DPE. C'est le nom de la feuille qui ne te convient pas ?
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut Chossette,
      Oui je pense que c'est le nom qui ne lui convient pas (d'où ma solution) car : avec le mois et la date du jour
      Bonne journée à toi
      0
    2. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Ah ok ! Désolé je n'avais pas vu ta réponse ! Je pense qu'effectivement ça fonctionnera mieux comme ça !

      Bonne journée également.
      0
  3. mariek888
     
    Merci pour vos réponses.

    Le code marche bien cependant comment mettre un message d'erreur pour dire que l'onglet a déjà été crée si jamais la personne essaye de la faire 2 fois de suite:

    Sheets("DPE").Copy , Before:=Sheets("DPE")
    ActiveSheet.Name = Format(Date, "dd mmmm")
    Range("B13").Select

    If ActiveSheet.Name = Format(Date, "dd mmmm") Then
    MsgBox "Historique déjà effectué ", vbExclamation

    Merci :D
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Pour cela, il vous faut boucler au préalable sur toutes les feuilles du classeur actif :

      Dim Ws As Worksheet  
      For Each Ws In ThisWorkbook.Worksheets  
      If Ws.Name = Format(Date, "dd mmmm") Then  
      MsgBox "Historique déjà effectué ", vbExclamation  
      Exit Sub  
      End If  
      Sheets("DPE").Copy , Before:=Sheets("DPE")   
      ActiveSheet.Name = Format(Date, "dd mmmm")


      pour la gestion des boucles, voir les tutoriels de Silkyroad
      0
    2. mariek888
       
      Merci pijaku !
      Je vais essayer de le faire marcher en lisant le lien que tu m'as donné pour la gestion des boucles.
      0
  4. mariek888
     
    Désolé j'ai encore un souci

    Voilà j'ai changé mon code avec une boucle d'erreur cependant la dernière ligne génère encore une erreur !! Je sais pas pourquoi :

    Sub Erreur()

    Dim feuilles As Worksheet

    On Error Resume Next
    For Each feuilles In ThisWorkbook.Worksheets
    On Error GoTo 0

    If Not feuilles Is Nothing Then
    MsgBox "La feuille existe dans le classeur."

    End If
    Next

    Sheets("DPE").Copy , Before:=Sheets("DPE")
    ActiveSheet.Name = Format(Date, "dd mmmm yyyy")

    End Sub

    Merci
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Hum hum... Ou as tu été cherché cette macro?
      En fait, cette macro n'est pas adaptée à ton cas...
      Essaie simplement ceci :

      Sub CreerFeuille () 
      Dim Ws As Worksheet   
      For Each Ws In ThisWorkbook.Worksheets   
      If Ws.Name = Format(Date, "dd mmmm yyyy") Then   
      MsgBox "Historique déjà effectué ", vbExclamation   
      Exit Sub   
      End If 
      Next Ws 
      Sheets("DPE").Copy , Before:=Sheets("DPE")    
      ActiveSheet.Name = Format(Date, "dd mmmm yyyy") 
      End Sub
      0
    2. mariek888
       
      Haaa c''est super merci beaucoup ^^

      Pour la macro c'est moi qui l'ai crée avec mes petites mains de débutante, c'est pour ça qu'elle semble bizzare ...

      =)
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Si tu veux intégrer à ta procédure la notion de "gestion d'erreur", tu as dans le site que je t'ai conseillé plus haut cette macro :

      Sub laMacro()
          Dim Ws As Worksheet
          'Evite le message d'erreur si la feuille n'existe pas.
          On Error Resume Next
          Set Ws = ThisWorkbook.Worksheets("NomFeuille")
          On Error GoTo 0
          '(Ws = Nothing quand l'objet attribué à la variable n'existe pas)
          If Not Ws Is Nothing Then
              MsgBox "La feuille existe dans le classeur."
              Else
              MsgBox "La feuille n'existe pas dans le classeur."
          End If
      End Sub


      Que tu peux adapter à ta situation comme ceci :

      Sub laMacro()
          Dim Ws As Worksheet
          Dim NomFeuille As String
          NomFeuille = Format(Date, "dd mmmm yyyy")
          On Error Resume Next
          Set Ws = ThisWorkbook.Worksheets(NomFeuille)
          On Error GoTo 0
          If Not Ws Is Nothing Then
              MsgBox "La feuille existe dans le classeur."
              Else
              Sheets("DPE").Copy , Before:=Sheets("DPE") 
              ActiveSheet.Name = NomFeuille
          End If
      End Sub
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mariek888
     
    Merci pour ta réponse

    En effet j'ai essayé d'adapter cette macro à ma situation et il me manquait pas mal de choses !!!

    Maintenant je comprends mieux comment ça fonctionne

    Merci pour tout et très bonne journée
    0