VBA - copie feuille après sélection

Bonjour à tous, toutes,

j'espère que vous allez bien.

je me permets de vous adresser ce post car j'aurais besoin de votre aide.

je vous explique (le fichier est joint au présent, ce qui devrait rendre les choses plus aisées).

sur le fichier, il y a une feuille nommée 01-08-2014.

dans la cellule g2 de cette feuille, j'ai un menu déroulant, me permettant de choisir mon mois et année.

ce que je cherche à faire c'est lorsque je change de mois (ex. je passe de 01-08-2014 à 01-09-2014) la feuille soit copiée et renommée du mois choisi en g2.

la copie de cette feuille devant se mettre devant la feuille copiée.

ex. la feuille 01-09-2014 vient avant celle du 01-08-2014.

la difficulté pour moi c'est de créer une macro qui s'enclenche lorsque je change de mois en g2.

quelqu'un ou quelqu'une peut-il/elle m'aider dans la réalisation de cette tâche ?

au plaisir de vous lire,

ben

Bonjour

Code à placer dans la feuille 01-08-2014

Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
Dim Lenom As String

If Not Application.Intersect(Target, Range("G2")) Is Nothing Then

Lenom = Format(Range("G2"), "dd-mm-yyyy")
    For Each WS In Worksheets
        If WS.Name = Lenom Then
        MsgBox ("La feuille existe deja")
        Exit Sub
        End If
    Next
Sheets.Add(before:=Sheets(1)).Name = Lenom
End If
End Sub

Amicalement

Nad

Re

Oups ! J'ai oublié la copie

Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
Dim Lenom As String

If Not Application.Intersect(Target, Range("G2")) Is Nothing Then

Lenom = Format(Range("G2"), "dd-mm-yyyy")
    For Each WS In Worksheets
        If WS.Name = Lenom Then
        MsgBox ("La feuille existe deja")
        Exit Sub
        End If
    Next
Sheets("01-08-2014").Copy before:=Sheets(1)
ActiveSheet.Name = Lenom
End If
End Sub

Nad

Bonjour,

Une variante

A+

23essai.zip (14.24 Ko)

bjr à tous, bjr frangy,

merci de votre aide et solution proposé

depuis qu j'ai reçu votre solution, j'essaie de la transposé la vba sur le fichier définitif et évidemment.. ça ne marche pas..

j'ai essayé plusieurs trucs mais rien n'y fait.. je suis "nul" en vba et m'en remet à vos conseils et aides...

je joins le fichier "définit" à savoir celui qui doit recevoir les données..

le hic c'est quand je vais sur la feuille 01-08-2014 et que j'essaie de créer la feuille 01-09-2014, ça bugg...

voici le message que j'ai

Option Explicit

Sub CopieSh(NomF As String)

Dim Date_Precedente As String

If FeuilleExiste(NomF) Then Exit Sub

Date_Precedente = "01/01/2000"

For Each Ws In ActiveWorkbook.Worksheets

If Ws.Name <> "DATA" Then

If DateValue(Ws.Name) < DateValue(NomF) And DateValue(Ws.Name) > DateValue(Date_Precedente) Then

Date_Precedente = Ws.Name

End If

End If

Next

ActiveSheet.Copy before:=Worksheets(Date_Precedente)

ActiveSheet.Name = NomF

End Sub

Public Function FeuilleExiste(NomFeuille As String) As Boolean

Dim Ws As Worksheet

FeuilleExiste = False

For Each Ws In ActiveWorkbook.Worksheets

If Ws.Name = NomFeuille Then

FeuilleExiste = True

Exit Function

End If

Next

End Function

évidemment, je ne trouve pas la problème.. qq un peut m'aider..

merci à vous

ben

Re

Pas de quoi

Bonne continuation

Nad

Salut le Forum

L'erreur provient du nom des feuilles.

Exemple Ws.name = "Feuil7" et tu demandes une conversion DateValue(Ws.Name)

Un petit correctif

If Ws.Name <> "DATA" And IsDate(Ws.Name) Then

Mytå

Rechercher des sujets similaires à "vba copie feuille selection"