Bonjour,
Je suis en train de faire une macro.
Mon objectif c'est de sélectionner 2 feuilles d'un fichier que je veux copier pour enregistrer sous un nouveau fichier avec un nom prédéfinie.
J'ai regardé sur internet pour trouver des idées et essayer de faire par moi même.
j'ai essayer les macro 1 à 1 et ça marche mais lorsque j'ai tout regrouper en une macro, ça ne veut pas marcher et cela me met comme message d'erreur "erreur de compilation : instruction incorrecte dans une procédure"
Voici la macro en question :
Sub save_cde()
Sheets(Array("cde transport", "copie colle facture")).Select
Sheets("copie colle facture").Activate
Sheets(Array("cde transport", "copie colle facture")).Copy
Dim sChemin As String, sFichier As String
Dim wkb As Workbook
Application.ScreenUpdating = False
sChemin = ThisWorkbook.Path & "\"
sFichier = "Commande Amont Roye du " & Feuil1.Range("P6") & ".xlsm"
If NomFichierValide(sFichier) Then
ActiveWorkbook.SaveCopyAs Filename:=sChemin & sFichier
Set wkb = Workbooks.Open(sChemin & sFichier)
SuppShapes wkb
Application.DisplayAlerts = False
wkb.SaveAs Filename:=sChemin & sFichier
wkb.Close
Set wkb = Nothing
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
Else
With Feuil1
.Activate
.Range("C").Select
End With
MsgBox "Nom de fichier invalide", vbOKOnly + vbInformation
End If
' suppr_bouton Macro
'
ActiveSheet.DrawingObjects.Delete
End Sub
Private Function NomFichierValide(sChaine As String) As Boolean
Dim I As Long
Const CaracInterdits As String = """*/:<>?[\]|"
NomFichierValide = True
If Len(sChaine) = 0 Then
NomFichierValide = False
Exit Function
End If
For I = 1 To Len(CaracInterdits)
If InStr(sChaine, Mid$(CaracInterdits, I, 1)) > 0 Then
NomFichierValide = False
Exit Function
End If
Next I
End Function
End Sub
Partager