Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - macro pour créer un nombre variable de feuilles

J

Jean P.

Guest
Bonjour à tous

Grace a votre aide (et ce qu vous m'avez appris et que je continue a apprendre) j'ai pratiquement complétée toute mon application. Il me reste encore quelques détails à règler.

Situation:
Dans un classeur source (compilation mensuelle.xls) j'ai deux feuilles sources (modèle facture et modèle historique, le classeur contient aussi 8 autres feuilles) que j'utilise pour créer des nouvelles feuilles dans deux classeurs cilbes différents (Facturation Cartierville.xls et Historique Cartierville.xls). Avec l'aide d'une inputbox, je saisie le nom de la nouvelle feuille (il s'agit du nom d'un nouveau client et celui-ci doit être le même dans les deux classeurs cibles) et celle-ci est créer dans les deux classeurs cibles.

Problématique:
Est-ce qu'il serait possible de faire une boucle qui me demande si je veux créer d'autres nouveaux clients avant de sauvegarder et fermer les classeurs avec les nouvelles feuilles

Code:
Sub AjoutClientCartierville1()
Dim Msg As String, Title As String, Default As String
Dim MyValue As Variant
Dim WBCible1 As Workbook
Dim WBCible2 As Workbook
Dim WSSource1 As Worksheet
Dim WSSource2 As Worksheet
Set WBCible1 = Workbooks("Facturation Cartierville.xls")
Set WBCible2 = Workbooks("Historique Cartierville.xls")
Set WSSource1 = Workbooks("Compilation mensuelle.xls").Worksheets("modèle facture")
Set WSSource2 = Workbooks("Compilation mensuelle.xls").Worksheets("modèle historique")
Msg = "Quel est le nom du nouveau client ?"
Title = "AJOUT DE NOUVEAU CLIENT"
Default = ""
MyValue = InputBox("Quel est le nom du nouveau client ?", "APPELLATION DE LA FEUILLE", "")
If MyValue = "" Then Exit Sub
WSSource1.Copy after:=WBCible1.Worksheets(Worksheets.Count)
ActiveSheet.Name = MyValue
ActiveWorkbook.Close SaveChanges:=True
WSSource2.Copy after:=WBCible2.Worksheets(Worksheets.Count)
ActiveSheet.Name = MyValue
ActiveWorkbook.Close SaveChanges:=True
End Sub

Encore une fois merci pour tous ceux qui voudront bien vouloir me répondre.

Bonne journée

Jean P.
 
R

Robert

Guest
Salut Jean P. salut le forum,

j'ai modifié ta macro pour qu'un message te demande si tu veux continuer à rentrer un nouveau client. Je pense que cela devrait te convenir.

Sub AjoutClientCartierville1()
Dim this As Workbook 'déclare la variable this (ce classeur)
Dim a As Byte 'déclare la variable a (réponse au message)
Dim Msg As String, Title As String, Default As String
Dim MyValue As Variant
Dim WBCible1 As Workbook
Dim WBCible2 As Workbook
Dim WSSource1 As Worksheet
Dim WSSource2 As Worksheet
Set this = ThisWorkbook 'définit la variable this
Set WBCible1 = Workbooks("Facturation Cartierville.xls")
Set WBCible2 = Workbooks("Historique Cartierville.xls")
Set WSSource1 = Workbooks("Compilation mensuelle.xls").Worksheets("modèle facture")
Set WSSource2 = Workbooks("Compilation mensuelle.xls").Worksheets("modèle historique")
Msg = "Quel est le nom du nouveau client ?"
Title = "AJOUT DE NOUVEAU CLIENT"
Default = ""
début: 'balise
MyValue = InputBox("Quel est le nom du nouveau client ?", "APPELLATION DE LA FEUILLE", "")
If MyValue = "" Then Exit Sub
WSSource1.Copy after:=WBCible1.Worksheets(WBCible1.Worksheets.Count)
ActiveSheet.Name = MyValue
this.Activate
WSSource2.Copy after:=WBCible2.Worksheets(WBCible2.Worksheets.Count)
ActiveSheet.Name = MyValue
this.Activate
'message
a = MsgBox("Un autre client ?", 4)
If a = 6 Then 'si "Oui"
GoTo début 'retourne à la balise "début"
Else 'si "Non"
GoTo fin 'va à la balise "fin"
End If
fin: 'balise
WBCible1.Close SaveChanges:=True
WBCible2.Close SaveChanges:=True
End Sub


À plus,

Robert
 
A

avoriaz

Guest
salut,

cette macro se rapproche tres fort a une macro que je cherche a faire
c'est a dire :

sur une application j'affiche une feuille de resultat de bilan..

cette feuille de resultat, je voudrais y ajouter un bouton d'enregistrement de cette feuille exel qui viendras s'ajouter au classeur sur un nom que je lui donnerais .....

vais regarder deja ce que je peux faire avec se code ....
mais si qq1 a une idee ...

encore une fois on dira jamais assez que ce forum est superbe

avo
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…