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 71 72 73
| Private Sub ExportData_Plage_De_Cellules_Click()
'Requiert la référence suivante :
'"Microsoft Activex Data Objects 2.8 library"
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Requete As String, RangeDest
Dim Fichier As String, chemin As String
Dim NomFeuille As String
Dim Arr(), Tblo(), C As Range
Dim A As Integer, Nb As Integer, X As Long
'*********** Variable à renseigner**************
chemin = "C:\Users\UTILISATEUR\Desktop\" 'Chemin du fichier de destination
Fichier = "attestetcourrier.xls" 'Fichier de destination
NomFeuille = "attestation" 'feuille du fichier de destination
'Liste des adresses de cellules sur la feuille de destination où tu veux écrire des données.
Arr = Array("E9", "E11", "J11", "E13", "O13", "J13", "E28", "I28", "M28)
'Définir les données de ton classeur que tu veux écrire dans le fichier fermé. Nom feuille à adapter
'et la plage de cellules à adapter.
'Le nombre de cellules de la feuille de destination doit être le même que celui de la feuille source.
With ThisWorkbook.Worksheets("facturation") 'classeur source
With .Range("Z1,X1,X2,X3,X4,X5,X6, X7,X8,X9") 'cellule a copier
Nb = .Cells.Count
ReDim Tblo(1 To Nb)
For Each C In .Cells
aa = C.Address
A = A + 1
Tblo(A) = C.Value
Next
End With
End With
'************************************************
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & chemin & "\" & Fichier & ";" & "Extended Properties=""Excel 8.0;HDR=NO;IMEX=2"""
'Pour chaque valeur du tableau Arr()
A = 1
For Each elt In Arr 'elt = élément dans l'array
'1 Sélection pour écrire dans une seule cellule
A = A + 1
RangeDest = elt & ":" & elt
Requete = "SELECT * from [" & NomFeuille & "$" & RangeDest & "]"
Rst.Open Requete, Conn, adOpenKeyset, adLockOptimistic
Rst(0).Value = Tblo(A)
Rst.Update
Rst.Close
Next
'Fermeture de la connection et recordset
Conn.Close
Set Conn = Nothing
Set Rst = Nothing
'Si requis ouverture du fichier cible
If MsgBox("Désirez-vous Imprimer le fichier cible """ & Fichier & """." _
, vbInformation + vbYesNo, "Attention") = vbYes Then
X = FindWindow(vbNullString, Application.Caption)
ShellExecute X, "printout:=2", Fichier, vbNullString, chemin, 2&
'ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True
End If
Me.TextBox1.Value = ""
Me.TextBox2.Value = ""
Me.TextBox3.Value = ""
Me.TextBox4.Value = ""
Me.TextBox5.Value = ""
Me.TextBox6.Value = ""
Me.TextBox7.Value = ""
Me.TextBox8.Value = ""
Me.ComboBox1.Value = ""
End Sub |
Partager