Bonjour
Je désire copier une feuille d'un classeur fermé dans un classeur ouvert. J'ai éssayé de regarder sur ce tutoriel
http://silkyroad.developpez.com/VBA/...sFermes/#LIV-D
mais je n'ai pas vu la partie copie de feuille.
Est-ce possible?
Bonjour
Je désire copier une feuille d'un classeur fermé dans un classeur ouvert. J'ai éssayé de regarder sur ce tutoriel
http://silkyroad.developpez.com/VBA/...sFermes/#LIV-D
mais je n'ai pas vu la partie copie de feuille.
Est-ce possible?
Bonjour,
Teste ce qui suit en ayant tout d'abord adapter le chemin, le nom du classeur et de la feuille dans la proc "Test" :
Hervé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 Sub Test() Dim ConCL As Object Dim Rs As Object Dim FeuilleDest As Worksheet Dim NomFichier As String Dim FeuilleSource As String Dim Plage As String 'chemin et nom du classeur cible, à adapter... NomFichier = "D:\Dossier 1\Dossier 2\Classeur1.xls" 'plage à récupérer ici, si on ne sait pas on peut prendre "large" (ici, colonne A à Z) ! Plage = "A:Z" 'nom de la feuille où on doit récupérer les valeurs, à adapter... FeuilleSource = "Feuil1" 'connexion au classeur ConnexionCLasseur ConCL, NomFichier, Rs 'effectue la récup With Rs .CursorType = 1 .LockType = 3 .Open "SELECT * FROM `" & FeuilleSource & "$" & Plage & "` ", ConCL If Not Rs.EOF Then Set FeuilleDest = ActiveWorkbook.Worksheets("Feuil1") FeuilleDest.Range("A1").CopyFromRecordset Rs Else 'si la feuille est vide... MsgBox "Aucun enregistrement renvoyé.", vbCritical End If End With ConCL.Close Set Rs = Nothing Set ConCL = Nothing End Sub 'Sub de connexion (séparée ici pour plus de lisibilité) Private Sub ConnexionCLasseur(ConnexCL As Object, _ Fichier As String, _ Optional Rs) 'création de l'objet en relation tardive (évite de cocher la référence) Set ConnexCL = CreateObject("ADODB.Connection") 'si demandé, crée l'objet pour le jeu d'erregistrements If Not IsMissing(Rs) Then Set Rs = CreateObject("ADODB.Recordset") End If 'ouvre la connexion ConnexCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Fichier & ";" & _ "Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;""" End Sub
J'ai appliqué ce code, mais ca ne me rapatrie que les données sans les mises en formes et les tableaux. Je ne sais pas si c'est possible de faire une copie parfaite de la feuille d'un fichier excel fermé.
Bonsoir,
Avec ADO tu ne récupère que les champs et non la mise en forme puisque le classeur est considéré comme une base de données.
Si tu veux récupérer la feuille à l'identique, il te faut ouvrir le classeur et faire une copie de la feuille. Ceci peut se faire sans que le classeur que tu ouvres soit visible.
Hervé.
Effectivement. L'ouverture du classeur en arrière plan, c'est ça je j'entrevois comme solution. Y'aurait-il une option dans la commande
thank's
Code : Sélectionner tout - Visualiser dans une fenêtre à part Workbooks.Open
Bonjour,
1 seul argument est obligatoire dans la commande open, c'est le chemin et nom du fichier.
Hervé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub Ouvrir() Dim Cl As Workbook Set Cl = Workbooks.Open("F:\Calculs Déperditions\Calcul déperditions Albrecht.xls") 'cache le classeur Windows(Cl.Name).Visible = False 'ici le reste du code... End Sub
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager