Bonjour
J'au réussi à créer un code VBA qui permet de copie une feuille existante vers une nouvelle en demandant le nom de la cible pour la nommer . Tout cela en cherchant les commandes de créations de feuilles , copie, copie en fin dernier onglet etc etc .. mais je bloque car je ne fais pas du tout de VBA j'arrive juste a en comprendre parfois les lignes, j'ai réussi à comprendre comment avec count placer la feuille copiée en dernier ^^... Puis le code peut être utilise pour d autres surtout !
Bref ce code donc sélectionne la feuille 'reporting" demande quel mois correspond l'analyse, et copie donc le contenu de la feuille "reporting" vers la nouvelle feuille (qui aura donc le nom choisit)...
le souci est que je ne sais pas mettre un bouton "annuler" sur cette boite de dialogue qui demande le mois ( et donc ferme le code). et que je ne sais pas comme proposer une liste de choix qui correspondrait aux mois à la place de rentrer l information à la main...
Voilu je pense que ce n'est pas compliqué mais je ne trouve pas enfin je trouve les lignes pour proposer un choix (une liste ) mais je n'arrive pas le mettre dans le code.
Merki d avance ! fichier joint !
code:
Sub UPDATE()
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Dim nom As String
Dim nom1 As String
Dim i As Byte
Dim verif As Boolean
Dim dte As Date
Dim dte1 As String
'
' Sauve le classeur actif
ActiveWorkbook.Save
' Sélection la feuille Reporting et la copie
a = Sheets.Count
Sheets("Reporting").Select
Sheets("Reporting").Copy After:=Sheets(a)
' Renommer la feuille.
' Définit dte et dte1 avec l'année en cours
dte = Now()
dte1 = Format(dte, "yyyy")
'
' Définit le message d'invite
Msg = Msg & "Entrez le nom du mois auquel le calcul" & Chr$(10)
Msg = Msg & "doit s'effectuer" & Chr$(10)
Msg = Msg & "caractères interdits : / \ ? * [ ]"
recom:
verif = False
nom = InputBox(Msg, "UPDATE Reporting ")
If nom = "" Then
GoTo recom
Else
For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
verif = True
End If
Next
End If
'
If verif = True Then
MsgBox "La feuille " & nom & " existe déjà, veuillez choisir un autre nom!"
GoTo recom:
End If
'
nom1 = nom & " " & dte1
'
verif = False
For i = 1 To Sheets.Count
If Sheets(i).Name = nom1 Then
verif = True
End If
Next
'
If verif = True Then
MsgBox "La feuille " & nom1 & " existe déjà, veuillez choisir un autre nom!"
GoTo recom:
End If
'
ActiveSheet.Name = nom1
End Sub
J'au réussi à créer un code VBA qui permet de copie une feuille existante vers une nouvelle en demandant le nom de la cible pour la nommer . Tout cela en cherchant les commandes de créations de feuilles , copie, copie en fin dernier onglet etc etc .. mais je bloque car je ne fais pas du tout de VBA j'arrive juste a en comprendre parfois les lignes, j'ai réussi à comprendre comment avec count placer la feuille copiée en dernier ^^... Puis le code peut être utilise pour d autres surtout !
Bref ce code donc sélectionne la feuille 'reporting" demande quel mois correspond l'analyse, et copie donc le contenu de la feuille "reporting" vers la nouvelle feuille (qui aura donc le nom choisit)...
le souci est que je ne sais pas mettre un bouton "annuler" sur cette boite de dialogue qui demande le mois ( et donc ferme le code). et que je ne sais pas comme proposer une liste de choix qui correspondrait aux mois à la place de rentrer l information à la main...
Voilu je pense que ce n'est pas compliqué mais je ne trouve pas enfin je trouve les lignes pour proposer un choix (une liste ) mais je n'arrive pas le mettre dans le code.
Merki d avance ! fichier joint !
code:
Sub UPDATE()
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Dim nom As String
Dim nom1 As String
Dim i As Byte
Dim verif As Boolean
Dim dte As Date
Dim dte1 As String
'
' Sauve le classeur actif
ActiveWorkbook.Save
' Sélection la feuille Reporting et la copie
a = Sheets.Count
Sheets("Reporting").Select
Sheets("Reporting").Copy After:=Sheets(a)
' Renommer la feuille.
' Définit dte et dte1 avec l'année en cours
dte = Now()
dte1 = Format(dte, "yyyy")
'
' Définit le message d'invite
Msg = Msg & "Entrez le nom du mois auquel le calcul" & Chr$(10)
Msg = Msg & "doit s'effectuer" & Chr$(10)
Msg = Msg & "caractères interdits : / \ ? * [ ]"
recom:
verif = False
nom = InputBox(Msg, "UPDATE Reporting ")
If nom = "" Then
GoTo recom
Else
For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
verif = True
End If
Next
End If
'
If verif = True Then
MsgBox "La feuille " & nom & " existe déjà, veuillez choisir un autre nom!"
GoTo recom:
End If
'
nom1 = nom & " " & dte1
'
verif = False
For i = 1 To Sheets.Count
If Sheets(i).Name = nom1 Then
verif = True
End If
Next
'
If verif = True Then
MsgBox "La feuille " & nom1 & " existe déjà, veuillez choisir un autre nom!"
GoTo recom:
End If
'
ActiveSheet.Name = nom1
End Sub
Pièces jointes
Dernière édition: