activer la reference Microsoft ActiveX Data Object

Riddick

XLDnaute Occasionnel
Bonjour à tous, le forum

J'ai un petit soucis j'essaie de gerer une base access et un fichier excel... Jusque là je pense avoir trouver des reponses que je dois retravailler dans le forum

MAIS

Il faut activer la reference Microsoft ActiveX Data Objects 2.0 Library
et activer la reference Microsoft ADO Ext. 2.5 for DDL and Security

Si quelqu'un peu me dire comment faire

Merci d'avance.....
 
R

Riddick

Guest
Merci Eric,

je te remercie pour la rapidité de ta reponse
J'utilisais beaucoup ce forum il ya 1 an il a changer d'aspect mais l'efficacité est toujours aussi presente.....
Merci XLD
Merci à tous
 

fredl

XLDnaute Impliqué
Re : Re:activer la reference Microsoft ActiveX Data Object

Bonjour à tous, je me permets de rebondir sur cette question pour vous poser celle ci dessous: existe t'il un moyen de le faire par le VBA?
(activer ou désactiver une reference dans une bibliothèque par le vba?)
si oui, comment?
Merci d'avance de vos réponses.
Bonne journée à tous
Frédéric
 

Oranger

XLDnaute Occasionnel
Re : activer la reference Microsoft ActiveX Data Object

Activer en VBA le référence Microsft ActiveX 2.0:
Sub ajoutREf()
ThisWorkbook.VBProject.References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado20.tlb ")
End Sub

Oranger
 

siocnarf

XLDnaute Occasionnel
Re : activer la reference Microsoft ActiveX Data Object

Bonjour,

Avec Excel 2007, j'obtiens "La méthode "VBProject de l'objet _workbook a échoué. Une idée?
Est-il possible de ne pas coder dur le chemin du fichier à charger?

Merci,

François
 
G

Guest

Guest
Re : activer la reference Microsoft ActiveX Data Object

Bonjour,

C'est un fil de 2005. De plus on a aucune idée de ton projet. Comment veux-tu qu'on te réponde correctement? Même si à priori la réponse serait oui.
Au bout de 169 messages tu devrait connaître un peu les habitudes de la maison. Non?

A+
 

siocnarf

XLDnaute Occasionnel
Re : activer la reference Microsoft ActiveX Data Object

Bonjour,

Un vieux fil ne veut pas dire un mauvais fil. Je croyais que le fil contenait toutes les informations et je ne vois pas la pertinence de mettre sous le nez le nombre de publication d'un individu. Quoi qu'il en soit, je vais me répondre.

Pour activer la référence:
Code:
Sub CreateRef_MSAXDO()
'http://www.mrexcel.com/forum/showthread.php?t=47971
'http://www.mrexcel.com/forum/showthread.php?t=8086
'Permet de charger la référence.  Il faut que la sécurité soit ajusté tel qu'indiqué dans les prérequis.
'// Microsoft ActiveX Data Objects 2.0 Library
'// Typical Dir > C:\Program Files\Common Files\System\ado\msado20.tlb
Dim ID As Object

On Error Resume Next
Set ID = ThisWorkbook.VBProject.References
ID.AddFromGuid "{00000200-0000-0010-8000-00AA006D2EA4}", 2, 0

End Sub

Pour identifier correctement le GUID.
1. Le cocher manuellement
2. Exécuter le code ci-dessous et noter le GUID
Code:
Sub GetGUID()
Dim ref As Object
'Permet d'identifier les GUID des references chargés.
For Each ref In ThisWorkbook.VBProject.References
Debug.Print ref.Name, ref.GUID
Next
End Sub

Maintenant pour éviter le message d'erreur:
Ajuster la sécurité "L’accès par programme au projet Visual Basic n’est pas fiable"
'Excel 2003: Menu Outils d'Excel -> Macro -> Sécurité -> Onglets Sources fiables -> Cocher "Faire confiance au projet Visual Basic".
'Excel 2007: Menu Office -> Options Excel -> Centre de gestion de la confidentialité -> Paramètres du Centre de gestion de la confidentialité -> Paramètres des macros -> Accèes approuvé au modèle d'objet du projet VBA
'Référence: L’accès par programme au projet Visual Basic n’est pas fiable - Forum des professionnels en informatique


Maintenant, il me reste un problème. Je veux ajouter mes macros à la barre d'accès rapide d'excel 2007 avec un petit VBA. Mais je ne trouve pas. Y-a-t-il un preneur?

Merci,

François
 

siocnarf

XLDnaute Occasionnel
Re : activer la reference Microsoft ActiveX Data Object

Bonjour,

Je ne suis pas certain de bien te suivre. Mon code ici-bas nécessite l'activation de la référence. J'ai regarder le tien par l'URL et je ne vois pas ce qui pose problème?!

Code:
Public Sub ConsoDatas(NomFichier$, NomFichierDest$, FeuilleSource$, FeuilleCible$)
Call AfficherMessageaAfficher("Importation des lignes ")
'Va chercher dans le classeur NomFichier (sans l'ouvrir) les données
'de la feuille FeuilleSource et les copie dans la feuille FeuilleCible
'du classeur actif, à la suite des données (éventuellement) déjà présentes.
'(La ligne d'entêtes de FeuilleSource n'est pas importée)
'inspiré de Rob Bovey, mpep
'nécessite une référence à la librairie
'Microsoft ActiveX Data Object 2.x Library
'http://www.excel-downloads.com/forum/35896-activer-la-reference-microsoft-activex-data-object.html
'ThisWorkbook.VBProject.References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado20.tlb ")
'http://blogs.codes-sources.com/coq/archive/2007/09/21/classeurs-excel-via-oledb-et-pour-les-versions-2007-xlsb-xlsm-xlsx.aspx
'http://frederic.sigonneau.free.fr/code/Ado/ADOConsolidation.txt
'http://www.vbforums.com/showthread.php?t=461226


Dim rsData As ADODB.Recordset
Dim szConnect As String
Dim szSQL As String
Dim Li
Dim FeuilleDest As Object
Dim StrVersion As String
Dim Derniereligne As Long




'Version de Excel
'"12"= Excel 2007
'"11"= Excel 2003
StrVersion = Application.Version

Select Case StrVersion

    Case Is < 12
    
        'Pre-2007
        ''' Crée la chaîne de connexion
        'Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties="Excel 8.0;HDR=YES;IMEX=1";
        szConnect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & NomFichier & ";Extended Properties=""Excel 8.0;HDR=NO"""
                    '"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & MonFichier.xls & ";Extended Properties=""Excel 8.0; IMEX=1"""
    Case Is >= 12

        ' À partir de 2007
        'Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties="Excel 12.0;HDR=YES;IMEX=1";
        szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & NomFichier & ";" & _
            "Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"""
         
          '.Provider = "Microsoft.Jet.OLEDB.4.0"
  '.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
   ' & FichierBDStatistics & ";Extented Properties=""Excel 12.0;HDR=YES;"""
   

End Select

    ' La requête est basée sur le nom de la feuille. Ce nom
    ' doit se terminer par un $ et doit être entouré de crochets droits.
    szSQL = "SELECT * FROM [" & FeuilleSource & "$];"

    Set rsData = New ADODB.Recordset
    rsData.Open szSQL, szConnect, adOpenForwardOnly, _
        adLockReadOnly, adCmdText

Merci,


François Racine
 

tototiti2008

XLDnaute Barbatruc
Re : activer la reference Microsoft ActiveX Data Object

Re,

Ben le mien, il ne déclare pas des variables objet ADO, il les crée avec CreateObject, donc il utilise les fonctionnalités ADO sans avoir coché la référence
Seul problème, remplacer les constantes ADO par leurs valeurs...
le code est un peu différent mais plus facilement portable

sur ton code, ça devrait donner un truc comme ça

Public Sub ConsoDatas(NomFichier$, NomFichierDest$, FeuilleSource$, FeuilleCible$)
Call AfficherMessageaAfficher("Importation des lignes ")
'Va chercher dans le classeur NomFichier (sans l'ouvrir) les données
'de la feuille FeuilleSource et les copie dans la feuille FeuilleCible
'du classeur actif, à la suite des données (éventuellement) déjà présentes.
'(La ligne d'entêtes de FeuilleSource n'est pas importée)
'inspiré de Rob Bovey, mpep
'nécessite une référence à la librairie
'Microsoft ActiveX Data Object 2.x Library
'http://www.excel-downloads.com/forum/35896-activer-la-reference-microsoft-activex-data-object.html
'ThisWorkbook.VBProject.References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado20.tlb ")
'http://blogs.codes-sources.com/coq/archive/2007/09/21/classeurs-excel-via-oledb-et-pour-les-versions-2007-xlsb-xlsm-xlsx.aspx
'http://frederic.sigonneau.free.fr/code/Ado/ADOConsolidation.txt
'http://www.vbforums.com/showthread.php?t=461226


Dim rsData As Object
Dim szConnect As String
Dim szSQL As String
Dim Li
Dim FeuilleDest As Object
Dim StrVersion As String
Dim Derniereligne As Long




'Version de Excel
'"12"= Excel 2007
'"11"= Excel 2003
StrVersion = Application.Version

Select Case StrVersion

Case Is < 12

'Pre-2007
''' Crée la chaîne de connexion
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties="Excel 8.0;HDR=YES;IMEX=1";
szConnect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & NomFichier & ";Extended Properties=""Excel 8.0;HDR=NO"""
'"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & MonFichier.xls & ";Extended Properties=""Excel 8.0; IMEX=1"""
Case Is >= 12

' À partir de 2007
'Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties="Excel 12.0;HDR=YES;IMEX=1";
szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & NomFichier & ";" & _
"Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"""

'.Provider = "Microsoft.Jet.OLEDB.4.0"
'.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
' & FichierBDStatistics & ";Extented Properties=""Excel 12.0;HDR=YES;"""


End Select

' La requête est basée sur le nom de la feuille. Ce nom
' doit se terminer par un $ et doit être entouré de crochets droits.
szSQL = "SELECT * FROM [" & FeuilleSource & "$];"

Set rsData = CreateObject("ADODB.Recordset")
rsData.Open szSQL, szConnect, adOpenForwardOnly, _
adLockReadOnly, adCmdText

en rouge, les changements, en vert, les constantes à remplacer par leur valeur
 

siocnarf

XLDnaute Occasionnel
Re : activer la reference Microsoft ActiveX Data Object

Bonjour,

Je vais y jeter un coup d'oeil.
Je constate que parfois si les fichiers sont volumineux, le processus d'importation échoue. Existe-t-il une façon de changer le timeout?

Merci,

François
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 319
Membres
102 862
dernier inscrit
Emma35400