Excel_macro_
Résolu
benji71
Messages postés
789
Statut
Membre
-
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//////
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
Salut le forum
Essaye avec ceci :
Mytå
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å
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///
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///
Bonjour berni
Essaies:
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