Excel_macro_

Résolu/Fermé
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 - 1 sept. 2012 à 16:35
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 - 2 sept. 2012 à 10:15
Bonjour à tous et ttes,

J'espère que vous allez bien et que votre week-end commence avec le soleil.
J'aurais besoin de votre aide pour la difficulté expliquée ci-dessous et dont voici le fichier : https://www.cjoint.com/?3Ibk0w1DlqI

j'ai sur le fichier une feuille nommée modèle.
Cette feuille je la copie et la renomme pour porter le nom du mois qui se situe dans la cellule b6.
j'avais par la passé trouvé (avec l'aide de certain d'entre vous que je remercie encore) une macro que voici :

Sub crée_feuil_mois()
Dim nom As String, num As Integer
nom = Replace("MODELE" & [b6].Value, " ", "")
Sheets("MODELE").Copy after:=Sheets(Sheets.Count)
On Error Resume Next
Do
Err.Clear
ActiveSheet.Name = nom
num = num + 1
nom = Left(nom, Len(nom) - 1) & num
Loop Until Err.Number = 0 Or num > 20
nom = ActiveSheet.Name
For Each elm In ActiveSheet.Shapes
If elm.Name <> "Rectangle 4" Then elm.Delete
Next elm
On Error GoTo 0
Sheets("DATA").Activate
Sheets(nom).Activate

Ma difficulté est double :

1) J'aurais aimé faire en sorte que lorsque je copie la feuille modèle via le bouton nomme « copier_f_du_mois » elle prenne le nom du mois situé en b6.
(Exemple, si je mets 01/11/2012 en b6 et que je copie la feuille modèle, la feuille copiée prenne le nom du mois à savoir : novembre)

2) Lorsque je copie la feuille, j'aimerais qu'elle vienne se placer directement derrière la feuille modèle. Actuellement lorsque je copie la feuille elle vient se placer derrière la feuille data.
En lisant la macro , je pensais qu'en changeant after par before que se serait régler mais ca marche pas.

Merci à ceux qui essayerons ou pourrons m'aider à résoudre ces deux difficultés.
Je vous souhaite une bonne matinée.

Cdlmnt,

Berni//////

4 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
1 sept. 2012 à 17:16
Salut le forum

Essaye avec ceci :
    Liste = "Janvier,Février,Mars,Avril," & _
            "Mai,Juin,Juillet,Août," & _
            "Septembre,Octobre,Novembre,Décembre"
    nom = Split(Liste, ",")(Month(Sheets("MODELE").[b6].Value) - 1)
    Sheets("MODELE").Copy after:=Sheets("MODELE")

Mytå
0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
1 sept. 2012 à 17:25
Bonjour myta,

j'espere que vous allez bien. merci pour votre réponse.
afin de ne pas commettre de boulette et de m'assurer avoir bien compris, le code que vous proposer doit remplacer l'entiereté du code vba précédant. correct ?

merci de votre reponse,

cdlmnt

berni///
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
1 sept. 2012 à 17:36
Re le forum

Benji71, tu remplaces seulement la partie
nom = Replace("MODELE" & [b6].Value, " ", "") 
Sheets("MODELE").Copy after:=Sheets(Sheets.Count) 

Mytå
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 1/09/2012 à 17:38
Re le forum

Et ajoute à la suite de tes DIM
Dim Liste as String

Mytå
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
1 sept. 2012 à 17:37
Bonjour berni

Essaies:
Sub crée_feuil_mois()
Dim wsh As Worksheet, nom As String
    nom = Format([B6].Value, "mmmm")
    Sheets("MODELE").Copy after:=Sheets("MODELE")
    Set wsh = ActiveSheet
    On Error Resume Next
    wsh.Name = nom
    On Error GoTo 0
    For Each elm In wsh.Shapes
        If elm.Name <> "Rectangle 4" Then elm.Delete
    Next elm
    If nom <> wsh.Name Then
      If MsgBox("Le mois de " & nom & " existe déja." & vbCr & _
                "Voulez-vous le remplacer ?" _
                , vbYesNo + vbCritical) = vbYes Then
        Application.DisplayAlerts = False
        Sheets(nom).Delete
        Application.DisplayAlerts = True
        wsh.Name = nom
        wsh.Activate
      Else
        Application.DisplayAlerts = False
        wsh.Delete
        Application.DisplayAlerts = True
        Sheets("MODELE").Activate
      End If
    End If
End Sub 

0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
1 sept. 2012 à 17:49
merci à vous deux,

je ne sais si vous recevrez ma reponse car j'ai un gros problème avec le site..
il post certain messages mais pas d'autres,

je teste vos propositions...d'av&ance un grand merci à tous les deux....


berni///
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
1 sept. 2012 à 23:31
Bonjour,
Au passage, ce n'est pas le site qui fait problème mais le titre de vos messages.
Un même titre n'est pas possible, c'est à vous de mettre un titre valable, et tout marchera bien.

Salutations
Le Pingou
0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
2 sept. 2012 à 10:15
bonjour le pingou,

j'espere que vous allez bien.merci pour votre réponse.
je vais donc m'appliquer à faire les choses plus correctmeent.
un tt grand merci à vous.
tres bonne jounrée.
berni///
0