OVH Cloud OVH Cloud

Manip fichier DBase

2 réponses
Avatar
Phil
Bonjour à tous,

Je cherche à savoir s'il est possible de manipuler les données d'un fichier
DBase avec VB dans un classeur Excel.
Peut on ajouter, modifier et supprimer des enregistrements ?

J'ai importé les données d'un fichier excel avec "Données" "Données
externes" "Importer les données"
mais les modifications ne sont pas reportées dans le fichier dbf et une
actualisation réinitialise les données initiales.

Pouvez-vous m'expliquer comment faire
Merci de votre aide.

2 réponses

Avatar
SilkRoad
bonjour Phil

je ne suis pas sur que ce soit exactement ce que tu recherches mais ces
exemples permettent de piloter des fichiers .dbf (DBase) depuis Excel


Sub piloterDBase_ajoutEnregistrement()
'necessite d'activer la reference
'Microsoft ActiveX Data Objects x.x Library
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Chemin As String, Cible As String, laBase As String

Chemin = "C:Documents and Settingsmicheldossier"
laBase = "maBase.dbf"

Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID'7;Dbq=" & _
Chemin & ";"

Cible = "SELECT * FROM " & laBase & ";"

Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic

With Rs
.AddNew
.Fields(0) = "Texte"
.Fields(1) = CDate("2005-07-04")
.Fields(2) = 10001
.Fields(3) = "un commentaire"
.Update
End With

Rs.Close
Cn.Close
End Sub


----------


Sub piloterDBASE_modifierEnregistrement()
Dim Cn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim fld As ADODB.Field

Dim Chemin As String, laBase As String

Chemin = "C:Documents and Settingsmicheldossier"
laBase = "maBase.dbf"

Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID'7;Dbq=" & _
Chemin & ";"

Set rsT = New ADODB.Recordset
rsT.Open laBase, Cn, adOpenKeyset, adLockOptimistic

With rsT
.MoveFirst
'recherche la valeur "mimi" dans champ "leNom"
.Find ("leNom='mimi'")
'quand la valeur "mimi" est trouvée , on modifie le champ "Matricule"
.Fields("Matricule") = 666
.Update
End With

Cn.Close
End Sub



----

Sub piloterDBase_supprimerEnregistrements()
Dim Cn As ADODB.Connection
Dim Chemin As String, laBase As String, Requete As String

Chemin = "C:Documents and Settingsmicheldossier"
laBase = "maBase.dbf"

Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID'7;Dbq=" & _
Chemin & ";"

'supprime les enregistrements si le champ "laDate" est vide
Requete = "DELETE * FROM " & laBase & " WHERE [laDate]IS NULL"
Cn.Execute Requete

Cn.Close
End Sub



cordialement
michel



"Phil" wrote:

Bonjour à tous,

Je cherche à savoir s'il est possible de manipuler les données d'un fichier
DBase avec VB dans un classeur Excel.
Peut on ajouter, modifier et supprimer des enregistrements ?

J'ai importé les données d'un fichier excel avec "Données" "Données
externes" "Importer les données"
mais les modifications ne sont pas reportées dans le fichier dbf et une
actualisation réinitialise les données initiales.

Pouvez-vous m'expliquer comment faire
Merci de votre aide.





Avatar
Phil
Merci de cette réponse
Cela correspond à mes besoins et m'a permis d'avancer dans mon projet

Est-il possible de controler l'activation de la référence "Microsoft ActiveX
Data Objects x.x Library"
et de l'activer si elle ne l'est pas ?

Merci de votre aide
Phil

"SilkRoad" a écrit dans le message de
news:
bonjour Phil

je ne suis pas sur que ce soit exactement ce que tu recherches mais ces
exemples permettent de piloter des fichiers .dbf (DBase) depuis Excel


Sub piloterDBase_ajoutEnregistrement()
'necessite d'activer la reference
'Microsoft ActiveX Data Objects x.x Library
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Chemin As String, Cible As String, laBase As String

Chemin = "C:Documents and Settingsmicheldossier"
laBase = "maBase.dbf"

Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID'7;Dbq=" & _
Chemin & ";"

Cible = "SELECT * FROM " & laBase & ";"

Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic

With Rs
.AddNew
.Fields(0) = "Texte"
.Fields(1) = CDate("2005-07-04")
.Fields(2) = 10001
.Fields(3) = "un commentaire"
.Update
End With

Rs.Close
Cn.Close
End Sub


----------


Sub piloterDBASE_modifierEnregistrement()
Dim Cn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim fld As ADODB.Field

Dim Chemin As String, laBase As String

Chemin = "C:Documents and Settingsmicheldossier"
laBase = "maBase.dbf"

Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID'7;Dbq=" & _
Chemin & ";"

Set rsT = New ADODB.Recordset
rsT.Open laBase, Cn, adOpenKeyset, adLockOptimistic

With rsT
.MoveFirst
'recherche la valeur "mimi" dans champ "leNom"
.Find ("leNom='mimi'")
'quand la valeur "mimi" est trouvée , on modifie le champ "Matricule"
.Fields("Matricule") = 666
.Update
End With

Cn.Close
End Sub



----

Sub piloterDBase_supprimerEnregistrements()
Dim Cn As ADODB.Connection
Dim Chemin As String, laBase As String, Requete As String

Chemin = "C:Documents and Settingsmicheldossier"
laBase = "maBase.dbf"

Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID'7;Dbq=" & _
Chemin & ";"

'supprime les enregistrements si le champ "laDate" est vide
Requete = "DELETE * FROM " & laBase & " WHERE [laDate]IS NULL"
Cn.Execute Requete

Cn.Close
End Sub



cordialement
michel



"Phil" wrote:

Bonjour à tous,

Je cherche à savoir s'il est possible de manipuler les données d'un
fichier


DBase avec VB dans un classeur Excel.
Peut on ajouter, modifier et supprimer des enregistrements ?

J'ai importé les données d'un fichier excel avec "Données" "Données
externes" "Importer les données"
mais les modifications ne sont pas reportées dans le fichier dbf et une
actualisation réinitialise les données initiales.

Pouvez-vous m'expliquer comment faire
Merci de votre aide.