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

VBA : petite macro de sauvegarde à ameliorer (gestion d'erreur)...

2 réponses
Avatar
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

2 réponses

Avatar
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




Avatar
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