VBA copie de feuilles et enregistrement
jp
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai essayé de créer un programme qui me permet dans un premier temps :
- il ouvre un classeur Excel vierge.
- en suite il retourne dans le classeur "LDevis.xls"
- On selection les feuilles "Recap", "Devis1", "Devis2"
- On les copie dans le classeur vierge
- On enregistre le classeur vierge avec me chemin donnée en cellule Range("B35")
- On ferme les deux classeur Excel
Mais ça ne marche pas.
Private Sub Image1_Click()
If MsgBox("Souhaitez vous enregistrer?", vbYesNo) = vbYes Then
Dim CL1 As Workbook
Dim CL2 As Workbook
Dim LaFeuille As Worksheet
Dim i As Byte, ListeACopier '(as variant)
Dim Ok As Boolean
Set CL1 = Workbooks.add
Set CL2 = Workbooks("LDevis.xls")
ListeACopier = Array("Recap", "Devis1", "Devis2")
For Each LaFeuille In CL1.Worksheets
For i = 0 To UBound(ListeACopier)
Ok = Ok Or LaFeuille.Name = ListeACopier(i)
Next
If Ok Then LaFeuille.copy After:=CL2.Worksheets(CL2.Worksheets.Count)
Ok = False
Next
Set CL1 = Nothing
Set CL2 = Nothing
ActiveWorkbook.SaveAs Filename:=Range("B35") _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Else
End If
End Sub
J'ai essayé de créer un programme qui me permet dans un premier temps :
- il ouvre un classeur Excel vierge.
- en suite il retourne dans le classeur "LDevis.xls"
- On selection les feuilles "Recap", "Devis1", "Devis2"
- On les copie dans le classeur vierge
- On enregistre le classeur vierge avec me chemin donnée en cellule Range("B35")
- On ferme les deux classeur Excel
Mais ça ne marche pas.
Private Sub Image1_Click()
If MsgBox("Souhaitez vous enregistrer?", vbYesNo) = vbYes Then
Dim CL1 As Workbook
Dim CL2 As Workbook
Dim LaFeuille As Worksheet
Dim i As Byte, ListeACopier '(as variant)
Dim Ok As Boolean
Set CL1 = Workbooks.add
Set CL2 = Workbooks("LDevis.xls")
ListeACopier = Array("Recap", "Devis1", "Devis2")
For Each LaFeuille In CL1.Worksheets
For i = 0 To UBound(ListeACopier)
Ok = Ok Or LaFeuille.Name = ListeACopier(i)
Next
If Ok Then LaFeuille.copy After:=CL2.Worksheets(CL2.Worksheets.Count)
Ok = False
Next
Set CL1 = Nothing
Set CL2 = Nothing
ActiveWorkbook.SaveAs Filename:=Range("B35") _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Else
End If
End Sub
A voir également:
- VBA copie de feuilles et enregistrement
- Copie cachée - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
2 réponses
Bonjour,
Peut-être un peu plus simple :D
A+
Peut-être un peu plus simple :D
Private Sub Copie() ' Image1_Click() If MsgBox("Souhaitez vous enregistrer?", vbYesNo) = vbYes Then Application.DisplayAlerts = False Sheets(Array("Recap", "Devis1", "Devis2")).Copy ActiveWorkbook.SaveAs Filename:=Range("B35") ActiveWorkbook.Close Application.DisplayAlerts = True 'Ca c'est pour fermer le classeur source 'ActiveWorkbook.Saved = True 'ActiveWorkbook.Close End If End Sub
A+
Mais en faite je veux que les valeur
je suis passé par l'enregistrement d'une macro