VBA copie de feuilles et enregistrement

Fermé
jp - 18 juin 2012 à 14:31
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 18 juin 2012 à 18:23
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

A voir également:

2 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
18 juin 2012 à 17:06
Bonjour,
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+
0
Merci

Mais en faite je veux que les valeur
je suis passé par l'enregistrement d'une macro
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 18/06/2012 à 18:23
Ah oui !, ton code ne parle absolument pas de copier uniquement les valeurs ??
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0