VBA : petite macro de sauvegarde à ameliorer (gestion d'erreur)...
2 réponses
Domi
Bonsoir à tous,
Avec l'aide du groupe (Merci Joel ;o)... ) j'ai intégré dans une macro ce
bout de code qui me permet de deplacer dans un nouveau classeur (ClassSauv)
les feuilles dont le nom figure dans la colonne A de la feuille Base et dont
la valeur dans la colonne E est "Terminé".
Cela marche parfaitement sauf dans un cas (qui peut malheureusement se
produire) : Celui où le nom de feuille figure bien dans la plage mais où la
feuille n'existe pas...
Dans ce cas plantage de la macro...
Je voudrais eviter d'opter pour la solution de facilité pour moi, qui
consiterais à mettre un On error resume Next...
Quelqu'un pourrait-il me proposer une soluce plus "propre" qui dans ce cas
( si l'ereur est bien du à ça bien sûr) renverrais un message " sauvegarde
impossible...Ecart..." et qui mettrai fin proprement à la macro.
Merci
Domi
Workbooks.Add
Set ClassSauv = ActiveWorkbook
ClassIni.Activate
Worksheets("Base").Select
For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp))
If Cell.Offset(0, 5).Value = "Terminé" Then
Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1)
ClassIni.Activate
End If
Next
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FxM
Bonsoir Domi,
De tête et non testé :
Workbooks.Add Set ClassSauv = ActiveWorkbook ClassIni.Activate Worksheets("Base").Select For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp)) If Cell.Offset(0, 5).Value = "Terminé" Then on error resume next set tem = sheets(cell.value) if tem <> "" then 'à tester : if tem.name = cell.value then 'à tester : if err > 0 then err.clear Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1) else msgbox "Alarme !":exit sub end if on error goto 0 ClassIni.Activate End If Next
@+ FxM
On 25/07/04 19:28, Domi wrote:
Bonsoir à tous,
Avec l'aide du groupe (Merci Joel ;o)... ) j'ai intégré dans une macro ce bout de code qui me permet de deplacer dans un nouveau classeur (ClassSauv) les feuilles dont le nom figure dans la colonne A de la feuille Base et dont la valeur dans la colonne E est "Terminé". Cela marche parfaitement sauf dans un cas (qui peut malheureusement se produire) : Celui où le nom de feuille figure bien dans la plage mais où la feuille n'existe pas... Dans ce cas plantage de la macro... Je voudrais eviter d'opter pour la solution de facilité pour moi, qui consiterais à mettre un On error resume Next... Quelqu'un pourrait-il me proposer une soluce plus "propre" qui dans ce cas ( si l'ereur est bien du à ça bien sûr) renverrais un message " sauvegarde impossible...Ecart..." et qui mettrai fin proprement à la macro. Merci Domi
Workbooks.Add Set ClassSauv = ActiveWorkbook ClassIni.Activate Worksheets("Base").Select For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp)) If Cell.Offset(0, 5).Value = "Terminé" Then Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1) ClassIni.Activate End If Next
Bonsoir Domi,
De tête et non testé :
Workbooks.Add
Set ClassSauv = ActiveWorkbook
ClassIni.Activate
Worksheets("Base").Select
For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp))
If Cell.Offset(0, 5).Value = "Terminé" Then
on error resume next
set tem = sheets(cell.value)
if tem <> "" then
'à tester : if tem.name = cell.value then
'à tester : if err > 0 then
err.clear
Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1)
else
msgbox "Alarme !":exit sub
end if
on error goto 0
ClassIni.Activate
End If
Next
@+
FxM
On 25/07/04 19:28, Domi wrote:
Bonsoir à tous,
Avec l'aide du groupe (Merci Joel ;o)... ) j'ai intégré dans une macro ce
bout de code qui me permet de deplacer dans un nouveau classeur (ClassSauv)
les feuilles dont le nom figure dans la colonne A de la feuille Base et dont
la valeur dans la colonne E est "Terminé".
Cela marche parfaitement sauf dans un cas (qui peut malheureusement se
produire) : Celui où le nom de feuille figure bien dans la plage mais où la
feuille n'existe pas...
Dans ce cas plantage de la macro...
Je voudrais eviter d'opter pour la solution de facilité pour moi, qui
consiterais à mettre un On error resume Next...
Quelqu'un pourrait-il me proposer une soluce plus "propre" qui dans ce cas
( si l'ereur est bien du à ça bien sûr) renverrais un message " sauvegarde
impossible...Ecart..." et qui mettrai fin proprement à la macro.
Merci
Domi
Workbooks.Add
Set ClassSauv = ActiveWorkbook
ClassIni.Activate
Worksheets("Base").Select
For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp))
If Cell.Offset(0, 5).Value = "Terminé" Then
Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1)
ClassIni.Activate
End If
Next
Workbooks.Add Set ClassSauv = ActiveWorkbook ClassIni.Activate Worksheets("Base").Select For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp)) If Cell.Offset(0, 5).Value = "Terminé" Then on error resume next set tem = sheets(cell.value) if tem <> "" then 'à tester : if tem.name = cell.value then 'à tester : if err > 0 then err.clear Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1) else msgbox "Alarme !":exit sub end if on error goto 0 ClassIni.Activate End If Next
@+ FxM
On 25/07/04 19:28, Domi wrote:
Bonsoir à tous,
Avec l'aide du groupe (Merci Joel ;o)... ) j'ai intégré dans une macro ce bout de code qui me permet de deplacer dans un nouveau classeur (ClassSauv) les feuilles dont le nom figure dans la colonne A de la feuille Base et dont la valeur dans la colonne E est "Terminé". Cela marche parfaitement sauf dans un cas (qui peut malheureusement se produire) : Celui où le nom de feuille figure bien dans la plage mais où la feuille n'existe pas... Dans ce cas plantage de la macro... Je voudrais eviter d'opter pour la solution de facilité pour moi, qui consiterais à mettre un On error resume Next... Quelqu'un pourrait-il me proposer une soluce plus "propre" qui dans ce cas ( si l'ereur est bien du à ça bien sûr) renverrais un message " sauvegarde impossible...Ecart..." et qui mettrai fin proprement à la macro. Merci Domi
Workbooks.Add Set ClassSauv = ActiveWorkbook ClassIni.Activate Worksheets("Base").Select For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp)) If Cell.Offset(0, 5).Value = "Terminé" Then Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1) ClassIni.Activate End If Next
Domi
Cela me semble aller parfaitement, en tout cas sur un premier test rapide : pas de problème. Merci beaucoup Domi
"FxM" a écrit dans le message de news:cASMc.17885$
Bonsoir Domi,
De tête et non testé :
Workbooks.Add Set ClassSauv = ActiveWorkbook ClassIni.Activate Worksheets("Base").Select For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp)) If Cell.Offset(0, 5).Value = "Terminé" Then on error resume next set tem = sheets(cell.value) if tem <> "" then 'à tester : if tem.name = cell.value then 'à tester : if err > 0 then err.clear Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1) else msgbox "Alarme !":exit sub end if on error goto 0 ClassIni.Activate End If Next
@+ FxM
On 25/07/04 19:28, Domi wrote:
Bonsoir à tous,
Avec l'aide du groupe (Merci Joel ;o)... ) j'ai intégré dans une macro ce
bout de code qui me permet de deplacer dans un nouveau classeur (ClassSauv)
les feuilles dont le nom figure dans la colonne A de la feuille Base et dont
la valeur dans la colonne E est "Terminé". Cela marche parfaitement sauf dans un cas (qui peut malheureusement se produire) : Celui où le nom de feuille figure bien dans la plage mais où la
feuille n'existe pas... Dans ce cas plantage de la macro... Je voudrais eviter d'opter pour la solution de facilité pour moi, qui consiterais à mettre un On error resume Next... Quelqu'un pourrait-il me proposer une soluce plus "propre" qui dans ce cas
( si l'ereur est bien du à ça bien sûr) renverrais un message " sauvegarde
impossible...Ecart..." et qui mettrai fin proprement à la macro. Merci Domi
Workbooks.Add Set ClassSauv = ActiveWorkbook ClassIni.Activate Worksheets("Base").Select For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp)) If Cell.Offset(0, 5).Value = "Terminé" Then Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1) ClassIni.Activate End If Next
Cela me semble aller parfaitement, en tout cas sur un premier test rapide :
pas de problème.
Merci beaucoup
Domi
"FxM" <fxmanceaux@chello.fr> a écrit dans le message de
news:cASMc.17885$i27.10769@news.chello.at...
Bonsoir Domi,
De tête et non testé :
Workbooks.Add
Set ClassSauv = ActiveWorkbook
ClassIni.Activate
Worksheets("Base").Select
For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp))
If Cell.Offset(0, 5).Value = "Terminé" Then
on error resume next
set tem = sheets(cell.value)
if tem <> "" then
'à tester : if tem.name = cell.value then
'à tester : if err > 0 then
err.clear
Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1)
else
msgbox "Alarme !":exit sub
end if
on error goto 0
ClassIni.Activate
End If
Next
@+
FxM
On 25/07/04 19:28, Domi wrote:
Bonsoir à tous,
Avec l'aide du groupe (Merci Joel ;o)... ) j'ai intégré dans une macro
ce
bout de code qui me permet de deplacer dans un nouveau classeur
(ClassSauv)
les feuilles dont le nom figure dans la colonne A de la feuille Base et
dont
la valeur dans la colonne E est "Terminé".
Cela marche parfaitement sauf dans un cas (qui peut malheureusement se
produire) : Celui où le nom de feuille figure bien dans la plage mais où
la
feuille n'existe pas...
Dans ce cas plantage de la macro...
Je voudrais eviter d'opter pour la solution de facilité pour moi, qui
consiterais à mettre un On error resume Next...
Quelqu'un pourrait-il me proposer une soluce plus "propre" qui dans ce
cas
( si l'ereur est bien du à ça bien sûr) renverrais un message "
sauvegarde
impossible...Ecart..." et qui mettrai fin proprement à la macro.
Merci
Domi
Workbooks.Add
Set ClassSauv = ActiveWorkbook
ClassIni.Activate
Worksheets("Base").Select
For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp))
If Cell.Offset(0, 5).Value = "Terminé" Then
Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1)
ClassIni.Activate
End If
Next
Cela me semble aller parfaitement, en tout cas sur un premier test rapide : pas de problème. Merci beaucoup Domi
"FxM" a écrit dans le message de news:cASMc.17885$
Bonsoir Domi,
De tête et non testé :
Workbooks.Add Set ClassSauv = ActiveWorkbook ClassIni.Activate Worksheets("Base").Select For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp)) If Cell.Offset(0, 5).Value = "Terminé" Then on error resume next set tem = sheets(cell.value) if tem <> "" then 'à tester : if tem.name = cell.value then 'à tester : if err > 0 then err.clear Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1) else msgbox "Alarme !":exit sub end if on error goto 0 ClassIni.Activate End If Next
@+ FxM
On 25/07/04 19:28, Domi wrote:
Bonsoir à tous,
Avec l'aide du groupe (Merci Joel ;o)... ) j'ai intégré dans une macro ce
bout de code qui me permet de deplacer dans un nouveau classeur (ClassSauv)
les feuilles dont le nom figure dans la colonne A de la feuille Base et dont
la valeur dans la colonne E est "Terminé". Cela marche parfaitement sauf dans un cas (qui peut malheureusement se produire) : Celui où le nom de feuille figure bien dans la plage mais où la
feuille n'existe pas... Dans ce cas plantage de la macro... Je voudrais eviter d'opter pour la solution de facilité pour moi, qui consiterais à mettre un On error resume Next... Quelqu'un pourrait-il me proposer une soluce plus "propre" qui dans ce cas
( si l'ereur est bien du à ça bien sûr) renverrais un message " sauvegarde
impossible...Ecart..." et qui mettrai fin proprement à la macro. Merci Domi
Workbooks.Add Set ClassSauv = ActiveWorkbook ClassIni.Activate Worksheets("Base").Select For Each Cell In Range(Range("A16"), Range("A65000").End(xlUp)) If Cell.Offset(0, 5).Value = "Terminé" Then Worksheets(Cell.Value).Move before:=ClassSauv.Sheets(1) ClassIni.Activate End If Next