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

VBA XL2000 : Erreur ouverture classeur après suppression feuilles et enregistrement

2 réponses
Avatar
Quetzalcoatl
Bonsoir,

Soit le code ci-dessous, qui ouvre un fichier XLS, supprime certaine feuilles,
enregistre et ferme le fichier.
Lorsque je veux ouvrir ensuite le fichier en question depuis l'explorateur
Windows, j'obtiens un Docteur WATSON (WIN NT 5).
Je pensais avoir trouvé l'explication ici :
http://support.microsoft.com/default.aspx?scid=kb;en-us;199212
et appliqué la solution de contournement, mais que nenni !
J'en ai mon câlisse de voyage !
Qu'est-ce qui ne va pas ? Avez-vous déjà rencontré ce type de désagrément, de
déboire, de tracas, de difficulté, d'embêtement, d'ennui, de souci, de carcere
duro, d'achalement ?
Ca fonctionne-t-y chez vous ? C'est quoi, ce binz ? Qui peut toute m'amancher ça
?

Merci d'avance pour toute piste ! Té ben d'adon !

Workbooks.Open "MyBloodyFile.xls"
Application.DisplayAlerts = False
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name <> "Super important" And Sheets(i).Name <> "Do not delete" And
Sheets(i).Name <> "Restricted" Then Sheets(i).Delete
Next i
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name = "Vade retro" Then Sheets(i).Name = "Coucou me re-voilà"
Next i
Application.DisplayAlerts = True
With ActiveWorkbook
.Save
.Close
End With

--
Avete amici

2 réponses

Avatar
MsNews
Bonsoir Quetzalcoatl,


Ceci devrait fonctionner :

J'ai omis dans la procédure, la deuxième boucle de ta procédure car je ne comprends pas comment tu peux réussir à
renommer une feuille dans ta deuxième boucle qui est autre que les 3 feuilles mentionnées en début de procédure ...
toutes les autres feuilles devraient être supprimées !

'----------------------------------------
Sub OK()

Dim Wk As Workbook
Dim Arr(), Fichier As String
Fichier = "c:exceldenis1.xls" 'à déterminer

'Liste de tes 3 feuilles à sauvegarder...
Arr = Array("Super important", "Do not delete", "Restricted")

Set Wk = Workbooks.Open(Fichier)

Application.DisplayAlerts = False
On Error Resume Next
With Wk
For Each sh In .Sheets
If Not IsNumeric(WorksheetFunction.Match(sh.Name, Arr, 0)) Then
Err = 0
sh.Delete
End If
Next
.Save
.Close
End With

End Sub
'----------------------------------------


Salutations!


"Quetzalcoatl" a écrit dans le message de news:

Bonsoir,

Soit le code ci-dessous, qui ouvre un fichier XLS, supprime certaine feuilles,
enregistre et ferme le fichier.
Lorsque je veux ouvrir ensuite le fichier en question depuis l'explorateur
Windows, j'obtiens un Docteur WATSON (WIN NT 5).
Je pensais avoir trouvé l'explication ici :
http://support.microsoft.com/default.aspx?scid=kb;en-us;199212
et appliqué la solution de contournement, mais que nenni !
J'en ai mon câlisse de voyage !
Qu'est-ce qui ne va pas ? Avez-vous déjà rencontré ce type de désagrément, de
déboire, de tracas, de difficulté, d'embêtement, d'ennui, de souci, de carcere
duro, d'achalement ?
Ca fonctionne-t-y chez vous ? C'est quoi, ce binz ? Qui peut toute m'amancher ça
?

Merci d'avance pour toute piste ! Té ben d'adon !

Workbooks.Open "MyBloodyFile.xls"
Application.DisplayAlerts = False
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name <> "Super important" And Sheets(i).Name <> "Do not delete" And
Sheets(i).Name <> "Restricted" Then Sheets(i).Delete
Next i
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name = "Vade retro" Then Sheets(i).Name = "Coucou me re-voilà"
Next i
Application.DisplayAlerts = True
With ActiveWorkbook
.Save
.Close
End With

--
Avete amici
Avatar
Quetzalcoatl
Ceci devrait fonctionner


Mais oui, ça fonctionne !
Alors là, bravo.
Cela dit, je ne comprends pas pourquoi l'un fonctionne et pas l'autre, ni en
quoi tu appliques la solution de contournement Microsoft.

J'ai omis dans la procédure, la deuxième boucle de ta procédure car je ne
comprends pas comment tu peux réussir à renommer une feuille dans ta deuxième
boucle qui est autre que les 3 feuilles mentionnées en début de procédure ...
toutes les autres feuilles devraient être supprimées !


Ca m'apprendra à vouloir faire de l'humour en bricolant mon code avant envoi.
Il faut lire "Do not delete" au lieu de "Vade retro".
Ca donne quoi, en code qui marche ? :-)

--
Alea jacta est