Aide excel VBA - Copier un onglet
Résolu
patate_560
Messages postés
47
Date d'inscription
Statut
Membre
Dernière intervention
-
patate_560 Messages postés 47 Date d'inscription Statut Membre Dernière intervention -
patate_560 Messages postés 47 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute en VBA et je dois faire une macro qui copie un onglet modèle et le renomme .
J'ai écrit le code suivant :
Sub Copie_Modele()
Sheets("Modele").Copy , Sheets("Modele")
Sheets.Copy.Name = "Nouveau"
End Sub
Et évidemment ça ne marche pas, il y a une erreur dans la ligne où je veux renommer l'objet.
Quelqu'un peut me dire mon erreur?
Merci d'avance!
Je débute en VBA et je dois faire une macro qui copie un onglet modèle et le renomme .
J'ai écrit le code suivant :
Sub Copie_Modele()
Sheets("Modele").Copy , Sheets("Modele")
Sheets.Copy.Name = "Nouveau"
End Sub
Et évidemment ça ne marche pas, il y a une erreur dans la ligne où je veux renommer l'objet.
Quelqu'un peut me dire mon erreur?
Merci d'avance!
A voir également:
- Aide excel VBA - Copier un onglet
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Trier un tableau excel - Guide
- Rouvrir un onglet fermé - Guide
- Comment copier une vidéo youtube - Guide
24 réponses
Re!
J'ai pensé simplifier ma macro.
Je pourrais tout faire en une seule procédure, si au cours de la première, j'ajoute que dans mon tableau de synthèse, certaine cellules seront égales au contenu d'autres cellules dans mes nouveaux onglets.
Pour l'instant, quand je voulais attribuer le contenu d'une cellule, je faisais ceci :
'Nom du client
Cells(lin_FA_Client, col_FA_Client) = Worksheets(1).Cells(lin_tab_Client, col_tab_Client)
Comment faire, pour écrire dans la macro ce qui équivaut à excel "=B2" par exemple. Ce qui permettrait d'actualiser le contenu de la cellule si je modifie mon onglet...
Est-ce que je dois faire ça avec Formula ou FormulaR1C1?
En fait, je voudrais l'ajouter dans cette boucle :
For I = 0 To UBound(tabloNomOnglet)
Sheets(tabloNomOnglet(I)).Select
With ActiveSheet
'Nom du client
Cells(lin_FA_Client, col_FA_Client) = Worksheets(1).Cells(lin_tab_Client, col_tab_Client)
Là je remplis le nouvel onglet, maintenant je veux dire que dans mon premier tableau, la celulle A2 sera égale au contenu de la cellule G7 de l'onglet créé par exemple....
End With
J'espère que j'ai été compréhensible!
Merci
J'ai pensé simplifier ma macro.
Je pourrais tout faire en une seule procédure, si au cours de la première, j'ajoute que dans mon tableau de synthèse, certaine cellules seront égales au contenu d'autres cellules dans mes nouveaux onglets.
Pour l'instant, quand je voulais attribuer le contenu d'une cellule, je faisais ceci :
'Nom du client
Cells(lin_FA_Client, col_FA_Client) = Worksheets(1).Cells(lin_tab_Client, col_tab_Client)
Comment faire, pour écrire dans la macro ce qui équivaut à excel "=B2" par exemple. Ce qui permettrait d'actualiser le contenu de la cellule si je modifie mon onglet...
Est-ce que je dois faire ça avec Formula ou FormulaR1C1?
En fait, je voudrais l'ajouter dans cette boucle :
For I = 0 To UBound(tabloNomOnglet)
Sheets(tabloNomOnglet(I)).Select
With ActiveSheet
'Nom du client
Cells(lin_FA_Client, col_FA_Client) = Worksheets(1).Cells(lin_tab_Client, col_tab_Client)
Là je remplis le nouvel onglet, maintenant je veux dire que dans mon premier tableau, la celulle A2 sera égale au contenu de la cellule G7 de l'onglet créé par exemple....
End With
J'espère que j'ai été compréhensible!
Merci
utilise .FormulaLocal de cette manière tu verras ta formule comme si tu l'avais utilisé sous excel .
ex:
Range("a2").FormulaLocal = "=b2"
pour ta boucle ....
En fait, je voudrais l'ajouter dans cette boucle :
For I = 0 To UBound(tabloNomOnglet)
Sheets(tabloNomOnglet(I)).Select
With ActiveSheet
'Nom du client
Cells(lin_FA_Client, col_FA_Client) = Worksheets(1).Cells(lin_tab_Client, col_tab_Client)
'Là je remplis le nouvel onglet, maintenant je veux dire que dans mon premier tableau, la celulle A2 sera égale au contenu de la cellule G7 de l'onglet 'créé par exemple....
range("A2").FormulaLocal = "=G7"
End With
ex:
Range("a2").FormulaLocal = "=b2"
pour ta boucle ....
En fait, je voudrais l'ajouter dans cette boucle :
For I = 0 To UBound(tabloNomOnglet)
Sheets(tabloNomOnglet(I)).Select
With ActiveSheet
'Nom du client
Cells(lin_FA_Client, col_FA_Client) = Worksheets(1).Cells(lin_tab_Client, col_tab_Client)
'Là je remplis le nouvel onglet, maintenant je veux dire que dans mon premier tableau, la celulle A2 sera égale au contenu de la cellule G7 de l'onglet 'créé par exemple....
range("A2").FormulaLocal = "=G7"
End With
Salut!
c'est encore moi!
j'ai rajouté une ligne de code pour éviter les bug quand il y'a une croix qui va créer un onglet qui existe déjà :
For lin = 31 To 500
' on vérifie que l'onglet n'existe pas déjà...
For b = 1 To Sheets.Count
If Cells(lin, 3).Value = Sheets(b).Name Then
MsgBox "La feuille existe déjà !!!"
Exit Sub
End If
Next b
ThisWorkbook.Sheets(1).Activate
If Cells(lin, 1) = "X" Then
NomOnglet = Cells(lin, 3).Value
Le problème c'est que maintenant il me met quasiment tout le temps "la feuille existe déjà" même quand elle n'existe pas et il ne créé plus les nouveaux onglets...
Je sais qu'il est possible de créer des fonctions et utiliser on Error Goto mais ça m'avait l'air vachement plus compliqué!!
Merci d'avance!
c'est encore moi!
j'ai rajouté une ligne de code pour éviter les bug quand il y'a une croix qui va créer un onglet qui existe déjà :
For lin = 31 To 500
' on vérifie que l'onglet n'existe pas déjà...
For b = 1 To Sheets.Count
If Cells(lin, 3).Value = Sheets(b).Name Then
MsgBox "La feuille existe déjà !!!"
Exit Sub
End If
Next b
ThisWorkbook.Sheets(1).Activate
If Cells(lin, 1) = "X" Then
NomOnglet = Cells(lin, 3).Value
Le problème c'est que maintenant il me met quasiment tout le temps "la feuille existe déjà" même quand elle n'existe pas et il ne créé plus les nouveaux onglets...
Je sais qu'il est possible de créer des fonctions et utiliser on Error Goto mais ça m'avait l'air vachement plus compliqué!!
Merci d'avance!