Excel_macro_

Résolu
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

  1. Contributeur
    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
    1. 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
      1. Contributeur
        Re le forum

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

        Mytå
        0
      2. Contributeur
        Re le forum

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

        Mytå
        0
    2. 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
      1. 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
        1. 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
        2. 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