Créer des feuilles en incrémentant une formule...

Le
Pierre F.
Bonjour à toutes et tous;

Pour un classeur, j'ai trouvé, dans les archives de ce groupe
(Merci!!!), une macro qui me permet de dupliquer une feuille "modèle" e=
n
incrémentant les noms des onglets

Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:=ActiveSheet
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
End Sub

Ma feuille modèle s'appelle Sem0001 et la macro me crée automatiqueme=
nt
des copies conformes, Sem0002, Sem0003

Mais :-)

En N1 de chaque feuille, j'ai une formule que je souhaiterais
incrémenter à chaque feuille créée.

Exemple:
Sur la feuille no 2, la formule est: =Sem0001!N1+7

Je souhaiterais que sur la feuille no 3 (nommée Sem0003), la formule
soit transformée en: Sem0002 + 7 etc.

En fait que la macro reprenne systématiquement la valeur de N1 de la
feuille précédente en y ajoutant 7.

Ou encore qu'elle prenne la valeur de la première feuille et y ajoute à=

chaque feuille créée 7*(Son numéro-1)
Remarque: La feuille de départ n'est pas la première feuille du class=
eur.

Merci pour votre aide.

Cordialement,
Pierre F.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #4461851
Salut Pierre
Je te propose d'inclure à ton code ceci :

Range("N1").FormulaR1C1 = "=" & x & "!RC+7"

ce qui donne au final le code suivant :

Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
Range("N1").FormulaR1C1 = "=" & x & "!RC+7"

Est ce bien ainsi ???


Bonjour à toutes et tous;

Pour un classeur, j'ai trouvé, dans les archives de ce groupe
(Merci!!!), une macro qui me permet de dupliquer une feuille "modèle" en
incrémentant les noms des onglets

Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
End Sub

Ma feuille modèle s'appelle Sem0001 et la macro me crée automatiquement
des copies conformes, Sem0002, Sem0003...

Mais :-)

En N1 de chaque feuille, j'ai une formule que je souhaiterais
incrémenter à chaque feuille créée.

Exemple:
Sur la feuille no 2, la formule est: =Sem0001!N1+7

Je souhaiterais que sur la feuille no 3 (nommée Sem0003), la formule
soit transformée en: Sem0002 + 7 ...etc.

En fait que la macro reprenne systématiquement la valeur de N1 de la
feuille précédente en y ajoutant 7.

Ou encore qu'elle prenne la valeur de la première feuille et y ajoute à
chaque feuille créée 7*(Son numéro-1)
Remarque: La feuille de départ n'est pas la première feuille du classeur.

Merci pour votre aide.

Cordialement,
Pierre F.






Pierre F.
Le #4461741
Salut Pierre
ce qui donne au final le code suivant :

Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
Range("N1").FormulaR1C1 = "=" & x & "!RC+7"

Est ce bien ainsi ???


MERCI !

C'est exactement ça; de plus, ça fonctionne du premier coup :-)
Super.

Cordialement,
Pierre F.

Pierre F.
Le #4461711
Salut Pierre
Je te propose d'inclure à ton code ceci :

Range("N1").FormulaR1C1 = "=" & x & "!RC+7"



Autre question:

Dans les mêmes conditions, et sur la même feuille, la cellule A1 cont ient :

=Concatener("Secteur ";1)

et je souhaite que l'incrémentation se produise aussi sur A1 sous la
forme Secteur 2, Secteur 3...

Comme je ne comprends pas tous les effets de ta formule, j'ai naïvement
essayé:

Range("A1").FormulaR1C1 = "=" & x & "!RC+1"

mais je me doutais bien que ce ne serait pas si simple :-)

Sinon, je pourrais peut-être récupérer le dernier No du nom de l'on glet
et le concaténer... mais je sais pas faire ça non plus :-(

Cordialement,
Pierre F.

Jacky
Le #4461501
Bonsoir,

Cellule A1 de départ au format
"Secteur " Standard
'----------
Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"
[A1].Formula = "=" & x & "!A1+1"
End Sub
'-----------

--
Salutations
JJ


"Pierre F." 2afa3$462f6933$55da2b80$
Salut Pierre
Je te propose d'inclure à ton code ceci :

Range("N1").FormulaR1C1 = "=" & x & "!RC+7"



Autre question:

Dans les mêmes conditions, et sur la même feuille, la cellule A1 contient :

=Concatener("Secteur ";1)

et je souhaite que l'incrémentation se produise aussi sur A1 sous la
forme Secteur 2, Secteur 3...

Comme je ne comprends pas tous les effets de ta formule, j'ai naïvement
essayé:

Range("A1").FormulaR1C1 = "=" & x & "!RC+1"

mais je me doutais bien que ce ne serait pas si simple :-)

Sinon, je pourrais peut-être récupérer le dernier No du nom de l'onglet
et le concaténer... mais je sais pas faire ça non plus :-(

Cordialement,
Pierre F.

Pierre F.
Le #4461481
Bonsoir,

Cellule A1 de départ au format
"Secteur " Standard
'----------
Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"
[A1].Formula = "=" & x & "!A1+1"
End Sub
'-----------



Bonsoir Jacky,

Oups; ça ne fonctionne pas.

#valeur comme message dans la cellule A1 de la nouvelle feuille;
et si je regarde la formule, je vois =Sem0001!A1+1, c'est à dire le n om
de la feuille de départ + 1

Il ne tient pas compte du mot "Secteur " inscrit dans A1

Merci.
Cordialement,
Pierre F.

Jacky
Le #4461471
Re...
Regarde ici
http://cjoint.com/?ezs0rEWpgJ

--
Salutations
JJ


"Pierre F." 382a1$462f8587$55da2b80$
Bonsoir,

Cellule A1 de départ au format
"Secteur " Standard
'----------
Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"
[A1].Formula = "=" & x & "!A1+1"
End Sub
'-----------



Bonsoir Jacky,

Oups; ça ne fonctionne pas.

#valeur comme message dans la cellule A1 de la nouvelle feuille;
et si je regarde la formule, je vois =Sem0001!A1+1, c'est à dire le nom
de la feuille de départ + 1

Il ne tient pas compte du mot "Secteur " inscrit dans A1

Merci.
Cordialement,
Pierre F.

Jacky
Le #4461451
Re...
Dans la feuille de départ, il faut inscrire 1 (un)
Et mettre au format "Secteur" Standard
Pour éviter le plantage au cas ou la feuille existe déjà modifier comme ceci
'------------
Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
On Error GoTo err
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"
[A1].Formula = "=" & x & "!A1+1"
Exit Sub
err:
MsgBox "La feuille " & Left(x, 3) & Format(Right(x, 4) + 1, "0000") & "
existe déjà."
End Sub
'---------------

--
Salutations
JJ


"Pierre F." 382a1$462f8587$55da2b80$
Bonsoir,

Cellule A1 de départ au format
"Secteur " Standard
'----------
Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"
[A1].Formula = "=" & x & "!A1+1"
End Sub
'-----------



Bonsoir Jacky,

Oups; ça ne fonctionne pas.

#valeur comme message dans la cellule A1 de la nouvelle feuille;
et si je regarde la formule, je vois =Sem0001!A1+1, c'est à dire le nom
de la feuille de départ + 1

Il ne tient pas compte du mot "Secteur " inscrit dans A1

Merci.
Cordialement,
Pierre F.

Pierre F.
Le #4461421
Re...
Dans la feuille de départ, il faut inscrire 1 (un)
Et mettre au format "Secteur" Standard
Pour éviter le plantage au cas ou la feuille existe déjà modifier comme ceci
'------------
Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
On Error GoTo err
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"
[A1].Formula = "=" & x & "!A1+1"
Exit Sub
err:
MsgBox "La feuille " & Left(x, 3) & Format(Right(x, 4) + 1, "0000") & "
existe déjà."
End Sub


Génial!

Je n'avais pas du tout compris le mot "Format"; j'avais mis le premier
item de la liste "Format de la cellule" intitulé justement "Standard" : -)
De plus, devant le fichier joint... je ne voyais rien dans la cellule
A1... et dès que la feuille était dupliquée, le mot secteur apparai ssait
magiquement :-)

Merci!

Encore une question... (c'est fou comme les solutions données sur ce
forum poussent à aller encore plus loin :-).

La ligne..
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"


...permet d'ajouter 7 à la valeur de N1 de la page précédente.

Est-il possible d'aller chercher la valeur de cette cellule sur une
autre feuille (toujours la même) en lisant la valeur, à chaque page
créée, une ligne plus bas.

Exemple:
Le N1 de la feuille "Sem0001" correspond à la valeur inscrite dans Feui l1!T1
Le N1 de la feuille créée Sem0002 correspondra alors à la valeur
inscrite dans Feuil1!T2
Le N1 de la feuille créée Sem0003 correspondra alors à la valeur
inscrite dans Feuil1!T3
...

Merci.

Cordialement,
Pierre F.

PS cette solution éliminerait évidemment le calcul N1+7; on pourra li re
la valeur "en clair" directement sur la Feuil1.

Jacky
Le #4461401
Re....

Ligne à remplacer:
[N1].Formula = "=" & x & "!N1+7"
Par
[N1] = Feuil1.Range("t" & Right(x, 4) + 1)

Feuil1 étant le code name vba de la Feuil1

Salutations
JJ

"Pierre F." 44396$462f96bd$55da2b80$
Re...
Dans la feuille de départ, il faut inscrire 1 (un)
Et mettre au format "Secteur" Standard
Pour éviter le plantage au cas ou la feuille existe déjà modifier comme
ceci
'------------
Sub Dupliquerfeuille()
Dim x As String
x = ActiveSheet.Name
ActiveSheet.Copy After:¬tiveSheet
On Error GoTo err
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"
[A1].Formula = "=" & x & "!A1+1"
Exit Sub
err:
MsgBox "La feuille " & Left(x, 3) & Format(Right(x, 4) + 1, "0000") & "
existe déjà."
End Sub


Génial!

Je n'avais pas du tout compris le mot "Format"; j'avais mis le premier
item de la liste "Format de la cellule" intitulé justement "Standard" :-)
De plus, devant le fichier joint... je ne voyais rien dans la cellule
A1... et dès que la feuille était dupliquée, le mot secteur apparaissait
magiquement :-)

Merci!

Encore une question... (c'est fou comme les solutions données sur ce
forum poussent à aller encore plus loin :-).

La ligne..
ActiveSheet.Name = Left(x, 3) & Format(Right(x, 4) + 1, "0000")
[N1].Formula = "=" & x & "!N1+7"


...permet d'ajouter 7 à la valeur de N1 de la page précédente.

Est-il possible d'aller chercher la valeur de cette cellule sur une
autre feuille (toujours la même) en lisant la valeur, à chaque page
créée, une ligne plus bas.

Exemple:
Le N1 de la feuille "Sem0001" correspond à la valeur inscrite dans Feuil1!T1
Le N1 de la feuille créée Sem0002 correspondra alors à la valeur
inscrite dans Feuil1!T2
Le N1 de la feuille créée Sem0003 correspondra alors à la valeur
inscrite dans Feuil1!T3
...

Merci.

Cordialement,
Pierre F.

PS cette solution éliminerait évidemment le calcul N1+7; on pourra lire
la valeur "en clair" directement sur la Feuil1.

Pierre F.
Le #4461391
Re....

Ligne à remplacer:
[N1].Formula = "=" & x & "!N1+7"
Par
[N1] = Feuil1.Range("t" & Right(x, 4) + 1)

Feuil1 étant le code name vba de la Feuil1



Merci!
Super.

Cordialement,
Pierre F.

Publicité
Poster une réponse
Anonyme