OVH Cloud OVH Cloud

vba-incrementer les noms de feuilles (pour Isabelle)

8 réponses
Avatar
Pierre.M
Bonsoir Isabelle,

j'ai bien repondu a ta proposition de code, bien qu'avec beaucoup de
retard..., ce qui fait que tu ne l'as peut-etre pas trouvee.

En attendant j'ai essaye de bricoler des trucs pour l'adapter a mes
besoins, mais ca ne fonctionne pas. Peut-etre aurais tu la gentillesse
d'y jeter un oeil?

Voir donc le fil "vba-incrementer les noms des feuilles" un peu plus
bas (09.10.06) pour les explications. Et voici mon code ;-(((

Private Sub go_Click()
Dim model()
For Each f In ActiveWorkbook.Sheets
nn = f.Name
mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(ActiveSheet.Range("AK3"), "mm") )
If nn = mm Then
x = x + 1
End If
Next
Sheets("Modèle").Copy before:=Sheets(Sheets.Count)
If mm <> nn Then
ActiveSheet.Name = Sheets("Modèle").Range("J3").Value & "_" & _
Format(Sheets("Modèle").Range("AK3"), "mm")
Else
ActiveSheet.Name = Sheets("Modèle").Range("J3").Value & "_" & _
Format(Sheets("Modèle").Range("AK3"), "mm") & "_" & x + 1
End If
Unload Me
End Sub

Avec tous mes remerciements. Bonne soiree.

Pierre

8 réponses

Avatar
isabelle
bonjour Pierre,

dit moi si c'est mieux,

For Each f In ActiveWorkbook.Sheets
nn = f.Name
mm = CStr(Sheets("Modèle").Range("J3").Value & "_" & Format(ActiveSheet.Range("AK3"), "mm"))
If nn = mm Then
x = x + 1
End If
Next
Sheets("Modèle").Copy before:=Sheets(Sheets.Count)
If x = 0 Then
ActiveSheet.Name = mm
Else
ActiveSheet.Name = mm & "_" & x
End If
Unload Me

isabelle

Bonsoir Isabelle,

j'ai bien repondu a ta proposition de code, bien qu'avec beaucoup de
retard..., ce qui fait que tu ne l'as peut-etre pas trouvee.

En attendant j'ai essaye de bricoler des trucs pour l'adapter a mes
besoins, mais ca ne fonctionne pas. Peut-etre aurais tu la gentillesse
d'y jeter un oeil?

Voir donc le fil "vba-incrementer les noms des feuilles" un peu plus bas
(09.10.06) pour les explications. Et voici mon code ;-(((

Private Sub go_Click()
Dim model()
For Each f In ActiveWorkbook.Sheets
nn = f.Name
mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(ActiveSheet.Range("AK3"), "mm") )
If nn = mm Then
x = x + 1
End If
Next
Sheets("Modèle").Copy before:=Sheets(Sheets.Count)
If mm <> nn Then
ActiveSheet.Name = Sheets("Modèle").Range("J3").Value & "_" & _
Format(Sheets("Modèle").Range("AK3"), "mm")
Else
ActiveSheet.Name = Sheets("Modèle").Range("J3").Value & "_" & _
Format(Sheets("Modèle").Range("AK3"), "mm") & "_" & x + 1
End If
Unload Me
End Sub

Avec tous mes remerciements. Bonne soiree.

Pierre



Avatar
Pierre.M
Bonsoir Isabelle,

désolé, mais ca ne fonctionne toujours pas...

Au 1er enregistrement j'obtiens la reference sans la date (1234_), au
2eme enregistrement de meme mais incremente avec 1 au lieu de 2
(1234__1) et au 3eme la macro plante ("erreur... impossible de donner
le meme nom...").

Peut-etre qu'il serait plus simple de definir un nouveau systeme de
numerotage des feuilles. Dommage celui-ci convenait bien. Comme quoi
des fois c'est plus simple a la main...

Merci encore de t'investir pour moi et bonne soiree.

Pierre


On 2006-10-12 02:49:17 +0200, isabelle said:

bonjour Pierre,

dit moi si c'est mieux,

For Each f In ActiveWorkbook.Sheets
nn = f.Name
mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(ActiveSheet.Range("AK3"), "mm"))
If nn = mm Then
x = x + 1
End If
Next
Sheets("Modèle").Copy before:=Sheets(Sheets.Count)
If x = 0 Then
ActiveSheet.Name = mm
Else
ActiveSheet.Name = mm & "_" & x
End If
Unload Me

isabelle

Bonsoir Isabelle,

j'ai bien repondu a ta proposition de code, bien qu'avec beaucoup de
retard..., ce qui fait que tu ne l'as peut-etre pas trouvee.

En attendant j'ai essaye de bricoler des trucs pour l'adapter a mes
besoins, mais ca ne fonctionne pas. Peut-etre aurais tu la gentillesse
d'y jeter un oeil?

Voir donc le fil "vba-incrementer les noms des feuilles" un peu plus
bas (09.10.06) pour les explications. Et voici mon code ;-(((

Private Sub go_Click()
Dim model()
For Each f In ActiveWorkbook.Sheets
nn = f.Name
mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(ActiveSheet.Range("AK3"), "mm") )
If nn = mm Then
x = x + 1
End If
Next
Sheets("Modèle").Copy before:=Sheets(Sheets.Count)
If mm <> nn Then
ActiveSheet.Name = Sheets("Modèle").Range("J3").Value & "_" & _
Format(Sheets("Modèle").Range("AK3"), "mm")
Else
ActiveSheet.Name = Sheets("Modèle").Range("J3").Value & "_" & _
Format(Sheets("Modèle").Range("AK3"), "mm") & "_" & x + 1
End If
Unload Me
End Sub

Avec tous mes remerciements. Bonne soiree.

Pierre




Avatar
isabelle
tu as bien une date dans la cellule Range("AK3") de la feuille active au moment de l'exécution ?
d'après ton résultat tu en n'a pas.

met ton fichier sur ci-joint pour que je puisse faire un test.

isabelle


Bonsoir Isabelle,

désolé, mais ca ne fonctionne toujours pas...

Au 1er enregistrement j'obtiens la reference sans la date (1234_), au
2eme enregistrement de meme mais incremente avec 1 au lieu de 2
(1234__1) et au 3eme la macro plante ("erreur... impossible de donner le
meme nom...").

Peut-etre qu'il serait plus simple de definir un nouveau systeme de
numerotage des feuilles. Dommage celui-ci convenait bien. Comme quoi des
fois c'est plus simple a la main...

Merci encore de t'investir pour moi et bonne soiree.

Pierre


On 2006-10-12 02:49:17 +0200, isabelle said:

bonjour Pierre,

dit moi si c'est mieux,

For Each f In ActiveWorkbook.Sheets
nn = f.Name
mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(ActiveSheet.Range("AK3"), "mm"))
If nn = mm Then
x = x + 1
End If
Next
Sheets("Modèle").Copy before:=Sheets(Sheets.Count)
If x = 0 Then
ActiveSheet.Name = mm
Else
ActiveSheet.Name = mm & "_" & x
End If
Unload Me

isabelle


Bonsoir Isabelle,

j'ai bien repondu a ta proposition de code, bien qu'avec beaucoup de
retard..., ce qui fait que tu ne l'as peut-etre pas trouvee.

En attendant j'ai essaye de bricoler des trucs pour l'adapter a mes
besoins, mais ca ne fonctionne pas. Peut-etre aurais tu la
gentillesse d'y jeter un oeil?

Voir donc le fil "vba-incrementer les noms des feuilles" un peu plus
bas (09.10.06) pour les explications. Et voici mon code ;-(((

Private Sub go_Click()
Dim model()
For Each f In ActiveWorkbook.Sheets
nn = f.Name
mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(ActiveSheet.Range("AK3"), "mm") )
If nn = mm Then
x = x + 1
End If
Next
Sheets("Modèle").Copy before:=Sheets(Sheets.Count)
If mm <> nn Then
ActiveSheet.Name = Sheets("Modèle").Range("J3").Value & "_" & _
Format(Sheets("Modèle").Range("AK3"), "mm")
Else
ActiveSheet.Name = Sheets("Modèle").Range("J3").Value & "_" & _
Format(Sheets("Modèle").Range("AK3"), "mm") & "_" & x + 1
End If
Unload Me
End Sub

Avec tous mes remerciements. Bonne soiree.

Pierre









Avatar
Pierre.M
voila:

http://cjoint.com/?kmxdRikBeG

Supprime d'abord la feuille 7890_11 (je crois que j'ai oublie de le faire...)

A+

Pierre
Avatar
isabelle
re bonjour Pierre,

dans ton fichier la macro s'exécute à partir de la feuille "Acceuil"
c'est cette feuille qui est active au moment de l'exécution.

actuellement dans la macro la date est trouver sur la feuille active "Acceuil"

mm = CStr(Sheets("Modèle").Range("J3").Value & "_" & Format(ActiveSheet.Range("AK3"), "mm"))

il faudrait modifier cette commande par :

mm = CStr(Sheets("Modèle").Range("J3").Value & "_" & Format(Sheets("Modèle").Range("AK3"), "mm"))

puisque la date est sur la feuille "Modèle"

isabelle

voila:

http://cjoint.com/?kmxdRikBeG

Supprime d'abord la feuille 7890_11 (je crois que j'ai oublie de le
faire...)

A+

Pierre



Avatar
Pierre.M
Bonjour Isabelle,

c'est vrai, j'aurai du voir ca tout seul... Pardon.
On touche le but a present.
Apres modification, mon 1er enregistrement marche (5678_10), le 2eme
s'incremente bien (5678_10_1) mais au 3eme ca plante la macro ("erreur
d'execution 1004, impossible de donner le meme nom...").
Je pense qu'il subsiste un petit probleme avec le x et le x+1. Il
faudrait ensuite un (x+1)+1 pour le 3eme enregistrement je suppose,
mais je ne sais pas l'ecrire...
Puis-je te mettre une derniere fois a contribution?

Merci enormement pour ton aide qui me fait bien progresser, meme si tu
ne t'en rends pas compte...;-)))

Pierre




On 2006-10-12 23:28:09 +0200, isabelle said:

re bonjour Pierre,

dans ton fichier la macro s'exécute à partir de la feuille "Acceuil"
c'est cette feuille qui est active au moment de l'exécution.

actuellement dans la macro la date est trouver sur la feuille active "Acceuil"

mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(ActiveSheet.Range("AK3"), "mm"))

il faudrait modifier cette commande par :

mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(Sheets("Modèle").Range("AK3"), "mm"))

puisque la date est sur la feuille "Modèle"

isabelle

voila:

http://cjoint.com/?kmxdRikBeG

Supprime d'abord la feuille 7890_11 (je crois que j'ai oublie de le faire...)

A+

Pierre




Avatar
isabelle
bonjour Pierre,

il y avait effectivement un problème avec cette ligne :
nn = f.Name
je l'ai modifier par :
nn = Left(f.Name,7)


For Each f In ActiveWorkbook.Sheets
nn = Left(f.Name,7)
mm = CStr(Sheets("Modèle").Range("J3").Value & "_" & Format(ActiveSheet.Range("AK3"), "mm"))
If nn = mm Then
x = x + 1
End If
Next
Sheets("Modèle").Copy before:=Sheets(Sheets.Count)
If x = 0 Then
ActiveSheet.Name = mm
Else
ActiveSheet.Name = mm & "_" & x
End If
Unload Me

a+
isabelle

Bonjour Isabelle,

c'est vrai, j'aurai du voir ca tout seul... Pardon.
On touche le but a present.
Apres modification, mon 1er enregistrement marche (5678_10), le 2eme
s'incremente bien (5678_10_1) mais au 3eme ca plante la macro ("erreur
d'execution 1004, impossible de donner le meme nom...").
Je pense qu'il subsiste un petit probleme avec le x et le x+1. Il
faudrait ensuite un (x+1)+1 pour le 3eme enregistrement je suppose, mais
je ne sais pas l'ecrire...
Puis-je te mettre une derniere fois a contribution?

Merci enormement pour ton aide qui me fait bien progresser, meme si tu
ne t'en rends pas compte...;-)))

Pierre




On 2006-10-12 23:28:09 +0200, isabelle said:

re bonjour Pierre,

dans ton fichier la macro s'exécute à partir de la feuille "Acceuil"
c'est cette feuille qui est active au moment de l'exécution.

actuellement dans la macro la date est trouver sur la feuille active
"Acceuil"

mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(ActiveSheet.Range("AK3"), "mm"))

il faudrait modifier cette commande par :

mm = CStr(Sheets("Modèle").Range("J3").Value & "_" &
Format(Sheets("Modèle").Range("AK3"), "mm"))

puisque la date est sur la feuille "Modèle"

isabelle


voila:

http://cjoint.com/?kmxdRikBeG

Supprime d'abord la feuille 7890_11 (je crois que j'ai oublie de le
faire...)

A+

Pierre









Avatar
Pierre.M
MerciMerciMerciMerciMercisabelle!!!!
Enfin je vais pouvoir finir ce truc qui m'embetais depuis un moment...
Et avant le weekend en plus;-)))
Merci encore. Vraiment.

Pierre



On 2006-10-13 16:52:27 +0200, isabelle said:

bonjour Pierre,

il y avait effectivement un problème avec cette ligne :
nn = f.Name
je l'ai modifier par :
nn = Left(f.Name,7)