Ecrire dans classeur fermé partagé excel 2007

Résolu/Fermé
zeguedoua Messages postés 2 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 23 septembre 2011 - 22 sept. 2011 à 13:56
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 juil. 2013 à 11:48
Bonjour,

J'ai pris cette procédure sur le net :

Sub EcrireFermé()
'
Dim chemin$, NomFich$
Dim classeur As Workbook
Dim base As Range

chemin = "d:\Mondossier\"
NomFich = "FichierFermé.xlsx"
Set classeur = GetObject(chemin & NomFich)
Set base = classeur.Sheets("Essai").Range("H2")
base = "Ecrire dans cellule"
MsgBox base

Workbooks(NomFich).Close False
'
End Sub

Je n'arrive pas à écrire dans la cellule base = Range("H2") du fichier fermé. Le message s'affiche correctement dans MsgBox

Merci pour votre aide et bonne journée

zeguedoua

A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
22 sept. 2011 à 14:12
Bonjour,
Pour lire et écrire dans un classeur fermé grâce à excel, voir ce tutoriel
0
zeguedoua Messages postés 2 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 23 septembre 2011
23 sept. 2011 à 13:52
Merci pijaku

J'ai adapté le code comme suit :

Sub ExportDonneeDansCelluleClasseurFerme()
    
    Dim Cn As ADODB.Connection
    Dim Cd As ADODB.Command
    Dim Rst As ADODB.Recordset
    Dim Fichier As String
    
    Fichier = "e:\ClasseurFermé.xlsx"
    
    Set Cn = New ADODB.Connection
    '--- Connection ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With
    
    Set Cd = New ADODB.Command
    Cd.ActiveConnection = Cn
    Cd.CommandText = "SELECT * FROM [Liste$D2:D2]"
    
    Set Rst = New ADODB.Recordset
    Rst.Open Cd, , adOpenKeyset, adLockOptimistic
    Rst(0).Value = "Donnée test"
    Rst.Update
    Cn.Close
    Set Cn = Nothing
    Set Cd = Nothing
    Set Rst = Nothing
    
End Sub


Mais je n'arrive pas à modifier la cellule D2. Le message "Erreur 3021" BOF ou EOF est égal à True s'affiche. La commande Rst(0).Value = "Donnée test" est sélectionnée au debbogage. Au passage quel est le role des différents variables (en particulier Rst et Rst(0)) ?
Merci et à bientot

zeguedoua
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
23 sept. 2011 à 14:56
bonjour

macro à adapter (XL2000)

Sub ecrire_cellule_dans_fermé()
'écrit la valeur de "G2" dans classeur fermé

Dim source As Object
Dim externe As Object
Dim fichier As String, onglet As String, nom_plage As String, texte_SQL As String


onglet = "ecrire" 'à adapter
' ouvre la  connexion avec la database "source" dans le classeur excel fermé
fichier = ActiveWorkbook.Path & "\fermé_ado.xls" ' à adapter
Set source = CreateObject("ADODB.Connection")
source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
                "data source=" & fichier & ";" & _
                "extended properties=""Excel 8.0;HDR=No;"";"
                
nom_plage = "B2:B2" 'à adapter
' requete SQL de la cellule de destination; "nom_plage" est une "vraie-fausse base _
de données": une étiquette,une ligne
texte_SQL = "SELECT * FROM [" & onglet & "$" & nom_plage & "]"
Set externe = CreateObject("ADODB.Recordset")
externe.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
    'externe.MoveFirst
    externe(0).Value = Range("G2").Value 'a adapter
    externe.Update
 
 externe.Close
 source.Close
 Set externe = Nothing
 Set source = Nothing
 
MsgBox "opération terminée"
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
23 sept. 2011 à 15:01
salut,
Merci Michel_m
A+
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
23 sept. 2011 à 15:04
ci joint un vieil exemple (2004) d'initialisation à l'utilisation de liaison dans fichiers fermés (excel-access)
https://www.cjoint.com/?3IxpbqSPaPc
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
23 sept. 2011 à 15:05
Merci.
J'y jetterais un oeil... quand j'aurais 5 minutes.
A+
0
Bonsoir michel

Merci pour la procédure qui marche très bien sous excel 2003. Mais dès que je passe à excel 2007, <<la ligne externe(0).Value = Range("G2")>> n'est pas reconnue et un bug se produit. J'ai téléchargé les fichiers joints qui marchent impec sous 2003. Je débute en connexion adodb, alors je n'hésiterai pas à poser souvent des questions.
Merci et A+

zeguedoua
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 27/09/2011 à 09:19
Bonjour

je viens d'essayer c'est OK mais, à ma grande surprise avec XL2007, il faut quand m^me cocher la référence (menu outils-références de VBE) microsoft activeX Data object 2.0
ce "cochage" n'est pas nécessaire avec les versions XL<2007

mystère et boule de gomme...
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
19 oct. 2011 à 12:26
Bonjour tous,
Ce que tu veux faire n'est pas possible mais rien ne t'empêche d'ouvrir le classeur, de le mettre invisible et de travailler dessus ?
A+
0
Merci lermite222
Je posterai un message concernant un autre sujet. L'on m'a conseillé access, Je le trouve un peu compliqué pour moi. Mais je vais m'y mettre et exporter vers excel dont les tableaux ont un meilleur design.
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
momouiz Messages postés 30 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 3
18 juil. 2013 à 11:42
salut tout le monde je me retrouve encore avec une run-time error '3021' avec ce code ci :
Sub spider_graph()
Dim Cn As ADODB.Connection
Dim Cd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim fichier As String

fichier = "C:\Documents and Settings\mslimani060313\Desktop\Tests\Radar spider graph de risque.xlsx"
Set Cn = New ADODB.Connection
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With

Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn
Cd.CommandText = " SELECT * FROM [Spider Graph $F43:F43]"

Set Rst = New ADODB.Recordset

Rst.Open Cd, , adOpenKeyset, adLockOptimistic
If Rst.EOF Then
MsgBox "matching data"
Rst(0).Value = "avec bdd tout est possible"
Else
MsgBox "no matching data"
End If
Rst.Update
Cn.Close

Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing

End Sub

Private Sub spider_graph_2()

'écrit la valeur de "G2" dans classeur fermé

Dim source As Object
Dim externe As Object
Dim fichier As String, onglet As String, nom_plage As String, texte_SQL As String


onglet = "Spider Graph " 'à adapter
' ouvre la connexion avec la database "source" dans le classeur excel fermé
fichier = "C:\Documents and Settings\mslimani060313\Desktop\Tests\Radar spider graph de risque.xlsx" ' à adapter
Set source = CreateObject("ADODB.Connection")
With source
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
' "data source=" & fichier & ";" & _
' "extended properties=""Excel 12.0;HDR=No;"";"

nom_plage = "B2:B2" 'à adapter
' requete SQL de la cellule de destination; "nom_plage" est une "vraie-fausse base _
de données": une étiquette,une ligne
texte_SQL = "SELECT * FROM [" & onglet & "$" & nom_plage & "]"
Set externe = CreateObject("ADODB.Recordset")
externe.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
'externe.MoveFirst
externe(0).Value = Range("G2").Value 'a adapter
externe.Update

externe.Close
source.Close
Set externe = Nothing
Set source = Nothing

MsgBox "opération terminée"
End Sub


quelqu'un pour m'aider s'il vous plait ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
18 juil. 2013 à 11:48
Bonjour,
Pour que ta demande soit traitée dans les meilleures conditions, je te recommande d'ouvrir un nouveau sujet.
0