Importation d'une plage d'un fichier xls sélectionner fermé
Bonjour tout le monde,
pour commencer, je suis désolé pour les mots que je vais employer, je ne suis pas un pro de Excel, juste je me débrouille avec tout ce que je peux trouver sur le net.
Je suis entrains de me créer un dossier complet qui rassemble,
-la création de devis
-la création de Facture
-une liste de facture et autre
avec pleins de boutons, automatiser, vider un devis ou une facture, faire un nouveau devis ou une nouvelle facture, et d'autres jusqu'à présent, j'ai réussi à tous faire sauf un bouton, le bouton qui permet d'importer un devis déjà enregistré en XLS je m'explique,
quand j'effectue un devis, je l'enregistre en PDF et en Excel, ensuite une fois que l'on m'à validé un devis et que j'ai réalisé l'intervention (cela peut être 1 mois après), j'aimerais ouvrir le Devis Excel concerner, dans mon onglet facturation (il n'y a presque aucune différence entre l'onglet devis et l'onglet facture mise à part les 12 premières lignes et les 14 dernières) c'est pour cela que je voudrais importer qu'une partie de mes cellules devis.
Pour résumer le tous :
- Sélectionner un fichier XLS qui se trouve dans un dossier prédéfini
- Copier la plage ("C13: H56") (feuille 1)
- Coller La plage au même endroit, mais dans le fichier ou se trouve le bouton importé
Voici un code vba que j'ai fait.
Sub Importer_devis()
'déclaration des variables
Dim listefichier As Variant
Dim monclasseur As Workbook
'on efface les anciennes données
Sheets("Facture").Range("C23:C35").Value = ""
Sheets("Facture").Range("C40:C56").Value = ""
Sheets("Facture").Range("F40:F56").Value = ""
Sheets("Facture").Range("G40:G56").Value = ""
Sheets("Facture").Range("E13").Value = ""
listefichier = Application.GetOpenFilename(Title:="Sélectionez Vorte Classeur", _
filefilter:="Fichiers Excel(*xls*),*xls*", buttontext:="cliquez")
If listefichier <> False Then
Set monclasseur = Application.Workbooks.Open(listefichier)
monclasseur.Sheets(1).Range("C13:H56").Copy
ThisWorkbook.ActiveSheet.Range("C13:H56").Paste
Application.DisplayAlerts = False
End If
End SubIl m'indique une erreur à ce niveau ,
ThisWorkbook.ActiveSheet.Range("C13:H56").PasteMerci d'avance pour votre aide en espérant avoir été le plus précis possible .
Bonne soirée à tous
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
La méthode "Paste" n'existe pas pour la classe Range. Il faut utiliser "PasteSpecial"
ThisWorkbook.ActiveSheet.Range("C13:H56").PasteSpecialBonjour,
Sub Importer_devis()
'déclaration des variables
Dim ListeFichier As Variant
Dim MonClasseur As Workbook
Dim CelluleDestination As Range
'on efface les anciennes données
With Sheets("Facture")
.Range("C23:C35").Value = ""
.Range("C40:C56").Value = ""
.Range("F40:F56").Value = ""
.Range("G40:G56").Value = ""
.Range("E13").Value = ""
Set CelluleDestination = .Range("C13")
End With
ListeFichier = Application.GetOpenFilename(Title:="Sélectionez Votre Classeur", _
filefilter:="Fichiers Excel(*xls*),*xls*", buttontext:="cliquez")
If ListeFichier <> False Then
Set MonClasseur = Application.Workbooks.Open(ListeFichier)
MonClasseur.Sheets(1).Range("C13:H56").Copy Destination:=CelluleDestination
End If
Set MonClasseur = Nothing
Set CelluleDestination = Nothing
End SubBonjour, ce fut clair et rapide, merci à vous deux
bonne journée à tous