Copier/coller une feuille

Résolu/Fermé
mariek888 - 15 juil. 2010 à 10:04
 mariek888 - 15 juil. 2010 à 14:37
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




A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 juil. 2010 à 10:12
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
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
15 juil. 2010 à 10:17
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 juil. 2010 à 10:23
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
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
15 juil. 2010 à 10:24
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
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 15/07/2010 à 10:51
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
Merci pijaku !
Je vais essayer de le faire marcher en lisant le lien que tu m'as donné pour la gestion des boucles.
0
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 15/07/2010 à 11:56
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
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 juil. 2010 à 12:09
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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