Ecrire dans classeur fermé partagé excel 2007
Résolu
zeguedoua
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
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
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:
- Ecrire dans classeur fermé partagé excel 2007
- Partage de photos - Guide
- Save as pdf office 2007 - Télécharger - Bureautique
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Meilleur site partage abonnement - Accueil - Services en ligne
5 réponses
Merci pijaku
J'ai adapté le code comme suit :
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
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
bonjour
macro à adapter (XL2000)
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
ci joint un vieil exemple (2004) d'initialisation à l'utilisation de liaison dans fichiers fermés (excel-access)
https://www.cjoint.com/?3IxpbqSPaPc
https://www.cjoint.com/?3IxpbqSPaPc
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
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
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+
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+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
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 ?