Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OwNAkuSrHHA.4324@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lSteph
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer 62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OwNAkuSrHHA.4324@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lSteph
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OwNAkuSrHHA.4324@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lSteph
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
mais j'ai toujours pas compris ce que vient faire
...
mais j'ai toujours pas compris ce que vient faireOn Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" a écrit dans le message de news:
...je voyais cette hypothèse:Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggéraisFais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lStephok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
mais j'ai toujours pas compris ce que vient faire
...
mais j'ai toujours pas compris ce que vient faire
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
Os0ZwlTrHHA.3248@TK2MSFTNGP03.phx.gbl...
...je voyais cette hypothèse:
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggérais
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lSteph
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OwNAkuSrHHA.4324@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lSteph
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
mais j'ai toujours pas compris ce que vient faire
...
mais j'ai toujours pas compris ce que vient faireOn Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" a écrit dans le message de news:
...je voyais cette hypothèse:Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggéraisFais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lStephok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
mais j'ai toujours pas compris ce que vient faire
...
mais j'ai toujours pas compris ce que vient faireOn Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" a écrit dans le message de news:
...je voyais cette hypothèse:Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggéraisFais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lStephok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
mais j'ai toujours pas compris ce que vient faire
...
mais j'ai toujours pas compris ce que vient faire
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
Os0ZwlTrHHA.3248@TK2MSFTNGP03.phx.gbl...
...je voyais cette hypothèse:
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggérais
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lSteph
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OwNAkuSrHHA.4324@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lSteph
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
mais j'ai toujours pas compris ce que vient faire
...
mais j'ai toujours pas compris ce que vient faireOn Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" a écrit dans le message de news:
...je voyais cette hypothèse:Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggéraisFais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lStephok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
le probème ne vient pas du bug excel 97 : Il a été résolu depuis excel
2000
voir http://www.excelabo.net/excel/plantagesdiv.php#plantagefeuill
J'ai pu le vérifier en déboguant dans la fenêtre d'exécution.. la nouvelle
feuille créée porte toujours le nom Bilan_001 (2) avant d'être renommée
Le bug même non résolu ne m'aurait pas concerné puisque toutes les copies
sont faites à partir de la même feuille et le plantage intervient bien avant
32 duplications (en général 20)
"LSteph" a écrit dans le message de news:
Bonjour,mais j'ai toujours pas compris ce que vient faire
...
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
...
(Comme je le disais, ceci serait un traitement à posteriori, donc pour
les feuilles déjà créées, donc pas utilisable telque mais à adapter à ta
macro)
Alors si finalement tu es bien dans le cas du bug Excel97,
...je le décris plus en détail:
Sh.copy after:=sheets(sheets.count)
cette instruction copie la feuille sh et la place à la fin,
au passage elle hérite entre autres d'un codename et d'un name
Supposons la feuille de CodeName Feuil3 (le vrai nom qui est dans VBE)
et de Name "Bilan_001" (le nom qui figure sur l'onglet dans excel)
Elle prendra pour CodeName(sauf ce fâmeux bug) Feuil4 (ou + selon le
cas)et pour Name "Bilan_001 (2)"
Le problème est que le vb d'excel97 a sa façon à lui de compter
au lieu d'ajouter un par addition il ajoute 1 à côté du nombre
Ce qui donnera si on boucle
Feuil31, feuil311...311111111111 jusqu'au dépassement de capacité.
aussi prenons pour l'exemple dans ton code
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Tu as pris soin de l'évolution du Name dans la boucle
mais pas du CodeName.
Ce qui donnerait à peu près ceci selon la façon de ton code:
'...
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
On Error Resume Next
Sheets(j + 1).Parent.VBProject.VBComponents(Sheets(j + 1).CodeName) _
.Properties("_CodeName") = "Feuil" & Entity_id
On Error GoTo 0
'....
Suivant le cas "Feuil" & Entity_id devra être +x pour ne pas générer un
codename déjà existant.
C'est pourquoi je proposais de te laisser adapter.
Cordialement.
lStephmais j'ai toujours pas compris ce que vient faireOn Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" a écrit dans le message de news:
...je voyais cette hypothèse:Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggéraisFais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lStephok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
le probème ne vient pas du bug excel 97 : Il a été résolu depuis excel
2000
voir http://www.excelabo.net/excel/plantagesdiv.php#plantagefeuill
J'ai pu le vérifier en déboguant dans la fenêtre d'exécution.. la nouvelle
feuille créée porte toujours le nom Bilan_001 (2) avant d'être renommée
Le bug même non résolu ne m'aurait pas concerné puisque toutes les copies
sont faites à partir de la même feuille et le plantage intervient bien avant
32 duplications (en général 20)
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uDxdeAYrHHA.3492@TK2MSFTNGP02.phx.gbl...
Bonjour,
mais j'ai toujours pas compris ce que vient faire
...
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
...
(Comme je le disais, ceci serait un traitement à posteriori, donc pour
les feuilles déjà créées, donc pas utilisable telque mais à adapter à ta
macro)
Alors si finalement tu es bien dans le cas du bug Excel97,
...je le décris plus en détail:
Sh.copy after:=sheets(sheets.count)
cette instruction copie la feuille sh et la place à la fin,
au passage elle hérite entre autres d'un codename et d'un name
Supposons la feuille de CodeName Feuil3 (le vrai nom qui est dans VBE)
et de Name "Bilan_001" (le nom qui figure sur l'onglet dans excel)
Elle prendra pour CodeName(sauf ce fâmeux bug) Feuil4 (ou + selon le
cas)et pour Name "Bilan_001 (2)"
Le problème est que le vb d'excel97 a sa façon à lui de compter
au lieu d'ajouter un par addition il ajoute 1 à côté du nombre
Ce qui donnera si on boucle
Feuil31, feuil311...311111111111 jusqu'au dépassement de capacité.
aussi prenons pour l'exemple dans ton code
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Tu as pris soin de l'évolution du Name dans la boucle
mais pas du CodeName.
Ce qui donnerait à peu près ceci selon la façon de ton code:
'...
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
On Error Resume Next
Sheets(j + 1).Parent.VBProject.VBComponents(Sheets(j + 1).CodeName) _
.Properties("_CodeName") = "Feuil" & Entity_id
On Error GoTo 0
'....
Suivant le cas "Feuil" & Entity_id devra être +x pour ne pas générer un
codename déjà existant.
C'est pourquoi je proposais de te laisser adapter.
Cordialement.
lSteph
mais j'ai toujours pas compris ce que vient faire
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
Os0ZwlTrHHA.3248@TK2MSFTNGP03.phx.gbl...
...je voyais cette hypothèse:
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggérais
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lSteph
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OwNAkuSrHHA.4324@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lSteph
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
le probème ne vient pas du bug excel 97 : Il a été résolu depuis excel
2000
voir http://www.excelabo.net/excel/plantagesdiv.php#plantagefeuill
J'ai pu le vérifier en déboguant dans la fenêtre d'exécution.. la nouvelle
feuille créée porte toujours le nom Bilan_001 (2) avant d'être renommée
Le bug même non résolu ne m'aurait pas concerné puisque toutes les copies
sont faites à partir de la même feuille et le plantage intervient bien avant
32 duplications (en général 20)
"LSteph" a écrit dans le message de news:
Bonjour,mais j'ai toujours pas compris ce que vient faire
...
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
...
(Comme je le disais, ceci serait un traitement à posteriori, donc pour
les feuilles déjà créées, donc pas utilisable telque mais à adapter à ta
macro)
Alors si finalement tu es bien dans le cas du bug Excel97,
...je le décris plus en détail:
Sh.copy after:=sheets(sheets.count)
cette instruction copie la feuille sh et la place à la fin,
au passage elle hérite entre autres d'un codename et d'un name
Supposons la feuille de CodeName Feuil3 (le vrai nom qui est dans VBE)
et de Name "Bilan_001" (le nom qui figure sur l'onglet dans excel)
Elle prendra pour CodeName(sauf ce fâmeux bug) Feuil4 (ou + selon le
cas)et pour Name "Bilan_001 (2)"
Le problème est que le vb d'excel97 a sa façon à lui de compter
au lieu d'ajouter un par addition il ajoute 1 à côté du nombre
Ce qui donnera si on boucle
Feuil31, feuil311...311111111111 jusqu'au dépassement de capacité.
aussi prenons pour l'exemple dans ton code
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Tu as pris soin de l'évolution du Name dans la boucle
mais pas du CodeName.
Ce qui donnerait à peu près ceci selon la façon de ton code:
'...
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
On Error Resume Next
Sheets(j + 1).Parent.VBProject.VBComponents(Sheets(j + 1).CodeName) _
.Properties("_CodeName") = "Feuil" & Entity_id
On Error GoTo 0
'....
Suivant le cas "Feuil" & Entity_id devra être +x pour ne pas générer un
codename déjà existant.
C'est pourquoi je proposais de te laisser adapter.
Cordialement.
lStephmais j'ai toujours pas compris ce que vient faireOn Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" a écrit dans le message de news:
...je voyais cette hypothèse:Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggéraisFais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lStephok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro.. elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
le probème ne vient pas du bug excel 97 : Il a été résolu depuis excel
2000
voir http://www.excelabo.net/excel/plantagesdiv.php#plantagefeuill
J'ai pu le vérifier en déboguant dans la fenêtre d'exécution.. la nouvelle
feuille créée porte toujours le nom Bilan_001 (2) avant d'être renommée
Le bug même non résolu ne m'aurait pas concerné puisque toutes les copies
sont faites à partir de la même feuille et le plantage intervient bien
avant
32 duplications (en général 20)
"LSteph" a écrit dans le message de news:
Bonjour,mais j'ai toujours pas compris ce que vient faire
...
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
...
(Comme je le disais, ceci serait un traitement à posteriori, donc pour
les feuilles déjà créées, donc pas utilisable telque mais à adapter à ta
macro)
Alors si finalement tu es bien dans le cas du bug Excel97,
...je le décris plus en détail:
Sh.copy after:=sheets(sheets.count)
cette instruction copie la feuille sh et la place à la fin,
au passage elle hérite entre autres d'un codename et d'un name
Supposons la feuille de CodeName Feuil3 (le vrai nom qui est dans VBE)
et de Name "Bilan_001" (le nom qui figure sur l'onglet dans excel)
Elle prendra pour CodeName(sauf ce fâmeux bug) Feuil4 (ou + selon le
cas)et pour Name "Bilan_001 (2)"
Le problème est que le vb d'excel97 a sa façon à lui de compter
au lieu d'ajouter un par addition il ajoute 1 à côté du nombre
Ce qui donnera si on boucle
Feuil31, feuil311...311111111111 jusqu'au dépassement de capacité.
aussi prenons pour l'exemple dans ton code
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Tu as pris soin de l'évolution du Name dans la boucle
mais pas du CodeName.
Ce qui donnerait à peu près ceci selon la façon de ton code:
'...
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
On Error Resume Next
Sheets(j + 1).Parent.VBProject.VBComponents(Sheets(j + 1).CodeName) _
.Properties("_CodeName") = "Feuil" & Entity_id
On Error GoTo 0
'....
Suivant le cas "Feuil" & Entity_id devra être +x pour ne pas générer un
codename déjà existant.
C'est pourquoi je proposais de te laisser adapter.
Cordialement.
lStephmais j'ai toujours pas compris ce que vient faireOn Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" a écrit dans le message de news:
...je voyais cette hypothèse:Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggéraisFais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lStephok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro..
elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro
va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a
échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
le probème ne vient pas du bug excel 97 : Il a été résolu depuis excel
2000
voir http://www.excelabo.net/excel/plantagesdiv.php#plantagefeuill
J'ai pu le vérifier en déboguant dans la fenêtre d'exécution.. la nouvelle
feuille créée porte toujours le nom Bilan_001 (2) avant d'être renommée
Le bug même non résolu ne m'aurait pas concerné puisque toutes les copies
sont faites à partir de la même feuille et le plantage intervient bien
avant
32 duplications (en général 20)
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uDxdeAYrHHA.3492@TK2MSFTNGP02.phx.gbl...
Bonjour,
mais j'ai toujours pas compris ce que vient faire
...
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
...
(Comme je le disais, ceci serait un traitement à posteriori, donc pour
les feuilles déjà créées, donc pas utilisable telque mais à adapter à ta
macro)
Alors si finalement tu es bien dans le cas du bug Excel97,
...je le décris plus en détail:
Sh.copy after:=sheets(sheets.count)
cette instruction copie la feuille sh et la place à la fin,
au passage elle hérite entre autres d'un codename et d'un name
Supposons la feuille de CodeName Feuil3 (le vrai nom qui est dans VBE)
et de Name "Bilan_001" (le nom qui figure sur l'onglet dans excel)
Elle prendra pour CodeName(sauf ce fâmeux bug) Feuil4 (ou + selon le
cas)et pour Name "Bilan_001 (2)"
Le problème est que le vb d'excel97 a sa façon à lui de compter
au lieu d'ajouter un par addition il ajoute 1 à côté du nombre
Ce qui donnera si on boucle
Feuil31, feuil311...311111111111 jusqu'au dépassement de capacité.
aussi prenons pour l'exemple dans ton code
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Tu as pris soin de l'évolution du Name dans la boucle
mais pas du CodeName.
Ce qui donnerait à peu près ceci selon la façon de ton code:
'...
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
On Error Resume Next
Sheets(j + 1).Parent.VBProject.VBComponents(Sheets(j + 1).CodeName) _
.Properties("_CodeName") = "Feuil" & Entity_id
On Error GoTo 0
'....
Suivant le cas "Feuil" & Entity_id devra être +x pour ne pas générer un
codename déjà existant.
C'est pourquoi je proposais de te laisser adapter.
Cordialement.
lSteph
mais j'ai toujours pas compris ce que vient faire
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
Os0ZwlTrHHA.3248@TK2MSFTNGP03.phx.gbl...
...je voyais cette hypothèse:
Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggérais
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lSteph
ok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro..
elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OwNAkuSrHHA.4324@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lSteph
Bonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro
va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a
échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
le probème ne vient pas du bug excel 97 : Il a été résolu depuis excel
2000
voir http://www.excelabo.net/excel/plantagesdiv.php#plantagefeuill
J'ai pu le vérifier en déboguant dans la fenêtre d'exécution.. la nouvelle
feuille créée porte toujours le nom Bilan_001 (2) avant d'être renommée
Le bug même non résolu ne m'aurait pas concerné puisque toutes les copies
sont faites à partir de la même feuille et le plantage intervient bien
avant
32 duplications (en général 20)
"LSteph" a écrit dans le message de news:
Bonjour,mais j'ai toujours pas compris ce que vient faire
...
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
...
(Comme je le disais, ceci serait un traitement à posteriori, donc pour
les feuilles déjà créées, donc pas utilisable telque mais à adapter à ta
macro)
Alors si finalement tu es bien dans le cas du bug Excel97,
...je le décris plus en détail:
Sh.copy after:=sheets(sheets.count)
cette instruction copie la feuille sh et la place à la fin,
au passage elle hérite entre autres d'un codename et d'un name
Supposons la feuille de CodeName Feuil3 (le vrai nom qui est dans VBE)
et de Name "Bilan_001" (le nom qui figure sur l'onglet dans excel)
Elle prendra pour CodeName(sauf ce fâmeux bug) Feuil4 (ou + selon le
cas)et pour Name "Bilan_001 (2)"
Le problème est que le vb d'excel97 a sa façon à lui de compter
au lieu d'ajouter un par addition il ajoute 1 à côté du nombre
Ce qui donnera si on boucle
Feuil31, feuil311...311111111111 jusqu'au dépassement de capacité.
aussi prenons pour l'exemple dans ton code
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Tu as pris soin de l'évolution du Name dans la boucle
mais pas du CodeName.
Ce qui donnerait à peu près ceci selon la façon de ton code:
'...
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
On Error Resume Next
Sheets(j + 1).Parent.VBProject.VBComponents(Sheets(j + 1).CodeName) _
.Properties("_CodeName") = "Feuil" & Entity_id
On Error GoTo 0
'....
Suivant le cas "Feuil" & Entity_id devra être +x pour ne pas générer un
codename déjà existant.
C'est pourquoi je proposais de te laisser adapter.
Cordialement.
lStephmais j'ai toujours pas compris ce que vient faireOn Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
"LSteph" a écrit dans le message de news:
...je voyais cette hypothèse:Ce que tu décris est un bug référencé d'excel97
d'abord est-ce le cas?
pour vérifier je te suggéraisFais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet
................................dans l'explorateur de projet
Feuil1
Feuil11
Feuil111
Feuil1111
Si c'est ce que tu as fait et que le cas soit différent oublies cette
proposition.
@+
lStephok merci
mais que va faire :
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
????
en ajout dans mon code?
aucune feuille ne se nomme Feuil11111 apres lancement de la macro..
elles
ont toutes le nom que je veux leur donner, jusqu'à que cela plante
merci
"LSteph" a écrit dans le message de news:
Bonsoir,
Ce que tu décris est un bug référencé d'excel97
---------
hors propos:
Dim i, j As IntegerDim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
seul j est integer, i est variant et devrait être as long si on veut
pouvoir dépasser la moitié des lignes d'une feuille mais faut l'écrire
de même seule Shyy est As Worksheet
si tu écris
dim var1, var2,var3,var4,...var180 as String
seul var180 est as string
----------
Pour revenir à la question
Fais alt+F11
tu constateras à peu près ceci dans l'explorateur de projet:
Feuil1
Feuil11
Feuil111
Feuil1111
Feuil11111
..
Feuil11111111111111111111111111111
C'est là que ça craque!
type de solution qui serait à posteriori
Dim i as integer, ws as Worksheet
'...
On Error Resume Next
i = 0
For Each ws In ActiveWorkbook.Worksheets
i = i + 1
ws.Parent.VBProject.VBComponents(ws.CodeName) _
.Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws
Je te laisse donc mettre au point la Solution a priori, si tu as du mal,
il doit y avoir cela sur excelabo.
Cordialement.
lStephBonjour,
J'ai une macro en VBA qui plante parfois sur une instruction.
Cette macro copie une feuille "Bilan_001" en autant de nouvelles
feuilles
que d'entités se trouvant dans la feuille "calendar".
Parfois la macro va jusqu'au bout, mais la plupart du remps, elle
s'arrête
sur l'instruction Shxx.Copy After:=Sheets(j)
Je ne comprends pas pourquoi.
Si je relance la macro après avoir supprimé les feuilles créées, ca
plante
dès le départ ! Si je ferme puis réouvre la feuille excel , la macro
va
plus loin et crée une trentaine de feuilles (la macro devrait en créer
62)
Le message d'erreur est "La méthod copy de la classe worksheet a
échoué"
Merci pour vos conseils
Le code :
Sub Creation_Balance_sheet_spreadsheet()
Dim i, j As Integer
Dim Sh, Shxx, Shyy As Worksheet
Dim Entity_id As String
Set Sh = ActiveWorkbook.Worksheets("Calendar")
Set Shxx = ActiveWorkbook.Worksheets("Bilan_001")
j = Shxx.Index
Application.ScreenUpdating = False
For i = 16 To Sh.Range("A65535").End(xlUp).Row
Entity_id = Sh.Cells(i, 1).Value
Shxx.Activate
Shxx.Copy After:=Sheets(j)
Sheets(j + 1).Name = "Bilan_" & Entity_id
Sheets(j + 1).Cells(15, 3).Value = Entity_id
Sheets(j + 1).Range(Cells(17, 1), Cells(53, 12)).Name = Sheets(j +
1).Name
Sheets(j + 1).Range(Cells(61, 15), Cells(81, 22)).Name = "PL_" &
Entity_id
Sheets(j + 1).Visible = True
j = j + 1
Next i
Application.ScreenUpdating = True
End Sub
je pensai avoir écrit dit que j'etais en 2003
La plupart des intervenants ne précisent pas leur version.. cela suppose
sans doute que'elle est récente.
J'aurais ou dire aussi que je n'etais pas en excel 2
Je n'ai pas perçu le côté pédagogique mais chacun voit les choses à sa
fenêtre et l'illumination aurait pu être réciproque.. il est vai que la
question pouvait être confuse.. pas autant que la réponse
je pensai avoir écrit dit que j'etais en 2003
La plupart des intervenants ne précisent pas leur version.. cela suppose
sans doute que'elle est récente.
J'aurais ou dire aussi que je n'etais pas en excel 2
Je n'ai pas perçu le côté pédagogique mais chacun voit les choses à sa
fenêtre et l'illumination aurait pu être réciproque.. il est vai que la
question pouvait être confuse.. pas autant que la réponse
je pensai avoir écrit dit que j'etais en 2003
La plupart des intervenants ne précisent pas leur version.. cela suppose
sans doute que'elle est récente.
J'aurais ou dire aussi que je n'etais pas en excel 2
Je n'ai pas perçu le côté pédagogique mais chacun voit les choses à sa
fenêtre et l'illumination aurait pu être réciproque.. il est vai que la
question pouvait être confuse.. pas autant que la réponse