voila en fait j'ai une macro qui m'ouvre plusieurs fichiers, je copie un onglet puis j'aimerai que la macro me ferme tous les classeurs commencant par stock, j'utilise ce code mais il me ferme que le classeur ou il y a la macro et pas les autres.
Dim Wb As Object
For Each Wb In Application.Workbooks
If Left(Wb.Name, 1) = S And Wb.Name <> ThisWorkbook.Name Then
On Error Resume Next
Wb.Saved = False
Wb.Close
End If
Next Wb
ThisWorkbook.Saved = False
ThisWorkbook.Close
End Sub
Dim Wb As Object
For Each Wb In Application.Workbooks
If Left(Wb.Name, 1) = "S" And Wb.Name <> ThisWorkbook.Name Then
On Error Resume Next
Wb.Saved = False
Wb.Close
End If
Next Wb
ThisWorkbook.Saved = False
ThisWorkbook.Close
End Sub
Oui, je pense qu'il faut mettre Wb.Saved = True, ce qui veut dire à VBA que le fichier a déjà été enregistré (ce n'est pas évident à comprendre du premier coup).
et derniere petite question lors de ma macro j'ai une boite de dialogue qui s'affiche "attention lors de cette opération les cellules ne seront plus fusionné" un code pour répondre automatiquement OK ??
Au lieu d'un MsgBox, il est préférable d'utiliser un WScript (merci à Staple1600).
Exemple :
Code:
Sub Message(Delai As Byte)
Dim WshShell, Mess
Set WshShell = CreateObject("WScript.Shell")
Mess = WshShell.Popup("Attention, lors de cette opération les cellules ne seront plus fusionnées", Delai, "Avertissement", 0)
End Sub
Cette macro affiche un message pendant 2 secondes. A toi de changer le délai par celui qui te convient, dans la ligne d'appel de la macro.
en fait c'est dés que je supprime la colonne cela me demande si je suis sur de vouloir continuer car les cellules ne seront plus fusionné mais je n'arrive pas à établir de réponse automatique OK.