Aide excel VBA - Copier un onglet
Résolu/Fermé
patate_560
Messages postés
47
Date d'inscription
samedi 16 décembre 2006
Statut
Membre
Dernière intervention
15 mai 2017
-
6 juil. 2010 à 10:43
patate_560 Messages postés 47 Date d'inscription samedi 16 décembre 2006 Statut Membre Dernière intervention 15 mai 2017 - 19 juil. 2010 à 14:23
patate_560 Messages postés 47 Date d'inscription samedi 16 décembre 2006 Statut Membre Dernière intervention 15 mai 2017 - 19 juil. 2010 à 14:23
A voir également:
- Aide excel VBA - Copier un onglet
- Liste déroulante excel - Guide
- Rouvrir un onglet fermé - Guide
- Comment copier une vidéo youtube - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
24 réponses
patate_560
Messages postés
47
Date d'inscription
samedi 16 décembre 2006
Statut
Membre
Dernière intervention
15 mai 2017
14 juil. 2010 à 11:28
14 juil. 2010 à 11:28
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
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
295
15 juil. 2010 à 06:37
15 juil. 2010 à 06:37
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
patate_560
Messages postés
47
Date d'inscription
samedi 16 décembre 2006
Statut
Membre
Dernière intervention
15 mai 2017
19 juil. 2010 à 13:16
19 juil. 2010 à 13:16
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!
patate_560
Messages postés
47
Date d'inscription
samedi 16 décembre 2006
Statut
Membre
Dernière intervention
15 mai 2017
19 juil. 2010 à 14:23
19 juil. 2010 à 14:23
c'est bon je me suis corrigée toute seule!
Il fallait juste que je rajoute mon bout de programme après :
If Cells(lin, 1) = "X" Then sinon ça le faisait pour toute les lignes!
Il fallait juste que je rajoute mon bout de programme après :
If Cells(lin, 1) = "X" Then sinon ça le faisait pour toute les lignes!