Excel_macro_

Résolu
benji71 Messages postés 789 Statut Membre -  
benji71 Messages postés 789 Statut Membre -
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. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
     
    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
  2. benji71 Messages postés 789 Statut Membre 23
     
    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. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
       
      Re le forum

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

      Mytå
      0
    2. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
       
      Re le forum

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

      Mytå
      0
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  4. benji71 Messages postés 789 Statut Membre 23
     
    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. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 477
       
      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. benji71 Messages postés 789 Statut Membre 23
       
      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