Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses
Avatar
Pierre F.
Bonjour =E0 toutes et tous;

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

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

Ma feuille mod=E8le s'appelle Sem0001 et la macro me cr=E9e automatiqueme=
nt=20
des copies conformes, Sem0002, Sem0003...

Mais :-)

En N1 de chaque feuille, j'ai une formule que je souhaiterais=20
incr=E9menter =E0 chaque feuille cr=E9=E9e.

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

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

En fait que la macro reprenne syst=E9matiquement la valeur de N1 de la=20
feuille pr=E9c=E9dente en y ajoutant 7.

Ou encore qu'elle prenne la valeur de la premi=E8re feuille et y ajoute =E0=
=20
chaque feuille cr=E9=E9e 7*(Son num=E9ro-1)
Remarque: La feuille de d=E9part n'est pas la premi=E8re feuille du class=
eur.

Merci pour votre aide.

Cordialement,
Pierre F.

10 réponses

Avatar
FFO
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.






Avatar
Pierre F.
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.

Avatar
Pierre F.
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.

Avatar
Jacky
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." a écrit dans le message de news:
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.

Avatar
Pierre F.
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.

Avatar
Jacky
Re...
Regarde ici
http://cjoint.com/?ezs0rEWpgJ

--
Salutations
JJ


"Pierre F." a écrit dans le message de news:
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.

Avatar
Jacky
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." a écrit dans le message de news:
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.

Avatar
Pierre F.
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.

Avatar
Jacky
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." a écrit dans le message de news:
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.

Avatar
Pierre F.
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.