Bonjour cher forum,
Je vous sollicite car je n'ai pas réussi à mettre la main à ce problème
Pour faire simple, j'ai un fichier principal qui va aller alimenter des fichiers secondaires à partir d'Userforms.
1. Les contraintes :
- Les fichiers secondaires se trouvent sur le sharepoint (pour le chemin, ce n'est pas un problème, par contre, ces fichiers sortent en lecture seule...)
- Les fichiers secondaires ne doivent pas s'ouvrir
2. Fonctionnement :
J'ouvre mon fichier principal, je saisis mes données dans les textboxs d'un Usf qui va alimenter UN des fichiers secondaires spécifique sans l'ouvrir puis va imprimer un document présent dans ce fichier secondaire.
3. Voici un code que j'ai trouvé qui me paraît le + proche de ce que je veux (après bien sûr à adapter avec mes textbox, etc.):
J'ai bien ajouté la référence 2.8 Activex mais un message d'erreur apparaît "Mise à jour impossible. La base de données ou l'objet est en lecture seule."
Sub ExportData_Plage_De_Cellules()
'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 NomFeuilSource As String
Dim AdrPlgSource As String
Dim NomFichier As String
Dim FilePathDest As String
Dim NomFeuilDest As String
Dim AdrPlgDest As String
Dim Requete As String
Dim C As Range
'*********** Variable à renseigner**************
NomFeuilSource = "Feuil1"
AdrPlgSource = Range("A1:A3").Address(True, True)
'Fichier de destination
NomFichier = "ABook1.xls"
'Chemin de mon fichier de destination
FilePathDest = "C:\denis\"
'Feuille de destination
NomFeuilDest = "Sheet3"
'Plage de destination
AdrPlgDest = "G1:G3"
'************************************************
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & FilePathDest & NomFichier & _
";" & "Extended Properties=""Excel 8.0;HDR=NO;IMEX=2"""
Requete = "SELECT * from [" & NomFeuilDest & "$" & AdrPlgDest & "]"
Rst.Open Requete, Conn, adOpenKeyset, adLockOptimistic
'Dans le classeur où est écrit la macro
With ThisWorkbook
With .Worksheets(NomFeuilSource)
'Pour chacune des cellules que l'on veut exporter les données
For Each C In .Range(AdrPlgSource)
'insertion de la valeur
Rst(0) = CDate(C.Value)
'Mise à jour de la ligne d'enregistrement
Rst.Update
'Passe à l'autre ligne du recordset
Rst.MoveNext
Next
End With
End With
'Fermeture de la connexion et recordset
Rst.Close
Conn.Close
'Libération de l'espace occupé par les objets
Set Rst = Nothing
Set Conn = Nothing
End Sub
Si ce n'est pas le bon code, n'hésitez pas à me le dire...
Je peux créer des fichiers tests si besoin, pour cette demande, j'ai pensé qu'il n'y aurait pas d'utilité (je peux me tromper)
Si besoin de plus d'explications, n'hésitez pas aussi
Merci beaucoup pour votre aide
Bonne soirée