Copier/Coller/Renommer feuille en VBA selon messagebox

  • Initiateur de la discussion Initiateur de la discussion micapilote
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

micapilote

Guest
Bonjour, je débute en VBA et je ne vais pas tarder à acheter un bouquin pour m'aider mais en attendant, si vous pouviez m'aider.
J'ai 1 fichier avec 2 feuilles modèles
je souhaiterai a l'ouverture du fichier que dans un premier temps, il me demande "nouveau fichier" ou "consultation",
"consultation" ouvrirai le fichier tel quel
et "nouveau fichier" afficherai ensuite un message et me demande quel est le nom du client, et que la macro copier/colle mes 2 modèles en les renommant avec le nom du client et inscrive aussi le nom dans les 2 cellules indiquée (les jaunes)

Comment ça j'en demande beaucoup !
Merci d'avance

PS: des idées de sites, livres, autres pour débuter en VBA ?
 

Pièces jointes

Re : Copier/Coller/Renommer feuille en VBA selon messagebox

Merci ça m'aide bcp, on y est presque, j'ai modifié une chose, il faut copier coller les modèles et non les renommer direct donc j'ai rajouté ça

Private Sub Workbook_Open()
x = MsgBox("Nouveau Fichier", vbYesNo)
If x = 6 Then
nom = InputBox("Nom du client")
Sheets("Modèle1").Copy After:=Sheets(1)
Sheets("Modèle1").Range("B2") = nom
Sheets("Modèle2").Copy After:=Sheets(1)
Sheets("Modèle2").Range("B3") = nom
Sheets("Modèle1").Name = nom & "1"
Sheets("Modèle2").Name = nom & "2"
End If
End Sub

La seule chose que je n'arrive pas (pour le moment), c'est éviter que mes feuilles modèle soit renommer (modèle1 devient modèle1(2)
Merci
 
Re : Copier/Coller/Renommer feuille en VBA selon messagebox

Re

OK
teste ceci

Code:
Private Sub Workbook_Open()
x = MsgBox("Nouveau Fichier", vbYesNo)
If x = 6 Then
 nom = InputBox("Nom du client")
 Sheets("Modèle1").Copy after:=Sheets(Sheets.Count)
 ActiveSheet.Range("B2") = nom
 ActiveSheet.Name = nom & "1"
 Sheets("Modèle2").Copy after:=Sheets(Sheets.Count)
 ActiveSheet.Range("B3") = nom
 ActiveSheet.Name = nom & "2"
End If
End Sub
 
Re : Copier/Coller/Renommer feuille en VBA selon messagebox

A priori c'est niquel. 2 (petites) choses
comment renvoyer les 2 nouvelles feuilles en 1er et 2eme position
et est t'il possible de renommer une feuille avec une variable (la c'est bon) et un autre mot ?
pour le moment ça donne
Modèle devient "toto" et je voudrais que cela devienne "Facture toto"
merci beaucoup en tout cas.
 
Re : Copier/Coller/Renommer feuille en VBA selon messagebox

Voilà, on touche (presque) au but

Private Sub Workbook_Open()
x = MsgBox("Voulez vous créer une nouvelle feuille ?", vbYesNo)
If x = 6 Then
nom = InputBox("Quel est le nom du client ?")
Sheets("Modèle1").Copy before:=Sheets("Modèle1")
ActiveSheet.Range("B2") = nom
ActiveSheet.Name = nom & " (FS)"
Sheets("Modèle2").Copy before:=Sheets("Modèle1")
ActiveSheet.Range("B3") = nom
ActiveSheet.Name = nom & " (Facture)"
End If
End Sub

Maintenant, j'essaye de faire répéter une 2nde question autant de fois que l'on ne répond pas non a la question.J'en suis là:

Private Sub Workbook_Open()
x = MsgBox("Voulez vous créer une nouvelle feuille ?", vbYesNo)
If x = 6 Then
nom = InputBox("Quel est le nom du client ?")
Sheets("Modèle1").Copy before:=Sheets("Modèle1")
ActiveSheet.Range("B2") = nom
ActiveSheet.Name = nom & " (FS)"
Sheets("Modèle2").Copy before:=Sheets("Modèle1")
ActiveSheet.Range("B3") = nom
ActiveSheet.Name = nom & " (Facture)"
End If
End Sub
x = MsgBox("Voulez vous créer une autre feuille ?", vbYesNo)

en copiant collant le code, ça fonctionne mais ça ne s'arrête pas (genre 10 copier/coller de code et j'ai 10X la question) alors que si on répond "non" à la 2eme question je voudrais que la cela s'arrête.
 
Dernière modification par un modérateur:
Re : Copier/Coller/Renommer feuille en VBA selon messagebox

Re

Inspire-toi de ceci

Code:
Private Sub Workbook_Open()
For n = 1 To 100 '100= maximum de copies (si plus envisagées augmenter)
x = MsgBox("Nouveau Fichier", vbYesNo)
If x = 6 Then
 nom = InputBox("Nom du client")
 Sheets("Modèle1").Copy after:=Sheets(Sheets.Count)
 ActiveSheet.Range("B2") = nom
 ActiveSheet.Name = nom & "1"
 Sheets("Modèle2").Copy after:=Sheets(Sheets.Count)
 ActiveSheet.Range("B3") = nom
 ActiveSheet.Name = nom & "2"
Else
Exit Sub
End If
Next n
End Sub
 
Re : Copier/Coller/Renommer feuille en VBA selon messagebox

Re,
finalement gros pb avec mon fichier, j'ai omis de signaler que les 2 feuilles copiées/collées/renommées sont liées entre elles par des formules !
en gros, tout est bon mais les formules entre ces 2 feuilles ne suivent pas, chaque formule de chaque feuille reste basé sur le modèle et non la feuille copiée donc gros pb.
exemple ci joint pour mieux comprendre
j'ai juste écrit une formule toute bête en A1
 

Pièces jointes

Re : Copier/Coller/Renommer feuille en VBA selon messagebox

c'est bon, trouvé, pour infos il faut copier/coller les 2 feuilles en même temps.

Code:
Private Sub Workbook_Open()
For n = 1 To 100 '100= maximum de copies (si plus envisagées augmenter)
x = MsgBox("Voulez vous créer une nouvelle facture ?", vbYesNo)
If x = 6 Then
Do
nom = InputBox("Quel est le nom du client ?")
 If nom = "" Then Exit Sub
  On Error Resume Next
  Set sht = Sheets(nom & " (FS)")
  If Err <> 0 Then
 
Sheets(Array("Facture modèle", "Détails modèle")).Copy Before:=Sheets("test")
 ActiveSheet.Name = nom & " (FS)"
Sheets(ActiveSheet.Index + 1).Name = nom & " (Détails)"
Err.Clear: Exit Do
  Else
  MsgBox "Une facture de ce nom existe déjà !"
  End If
 Loop
Else
Exit Sub
End If
Next n
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
29
Affichages
2 K
StanislasC
S
N
  • Question Question
Réponses
0
Affichages
813
Ninoush_
N
C
Réponses
1
Affichages
4 K
Conrad13
C
F
Réponses
0
Affichages
777
Franck Nouméa
F
S
Réponses
0
Affichages
849
S
J
Réponses
10
Affichages
20 K
jeremy6812
J
A
Réponses
17
Affichages
2 K
albane_44
A
M
Réponses
4
Affichages
957
momojoker
M
Retour