Utilisation ADO

  • Initiateur de la discussion Pierre
  • Date de début
P

Pierre

Guest
Bonjour à tous,

Actuellement j'ai un fichier (données)qui aprés ouverture, a un UserForm qui s'ouvre automatiquement et demande un mot de passe qui permet l'accés limité à certaines feuilles

Comment je peux faire pour écrire le code qui pourrait me permettre à partir d'un autre fichier de lire les données du fichier (données)sans être bloqué par le mot de passe.

D'avance merci pour vos réponses

Cordialement

Pierre
 

Jam

XLDnaute Accro
Salut Pierre,

Si je comprend bien ton problème, tu souhaites récupérer les données stockées dans des feuilles auxquelles tu n'as pas accès.

La solution la plus simple (à la condition que le projet ne soit pas vérouillé) c'est de désactiver les macros, d'ouvrir le fichier, basculer dans l'IDE, et de faire s'afficher les feuilles via la fenêtre de propriété.

Pour la méthode ADO, il te suffit d'utiliser le code suivant:
Code:
Sub testQuery()
  fich$ = 'D:\\ExempleTris.xls'
  Feuille$ = 'Feuil1'
  QueryWorksheet fich, Feuille
End Sub

Public Sub QueryWorksheet(NomFichier$, Feuille$)
'Rob Bovey, mpep
'nécessite une référence à la librairie
'Microsoft ActiveX Data Object 2.x Library
Dim rsData As ADODB.Recordset
Dim szConnect As String
Dim szSQL As String

    ''' Crée la chaîne de connexion
    szConnect = 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
        'Data Source=' & NomFichier & ';' & _
        'Extended Properties=Excel 8.0;'

    ' 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.
    ' Adapter ce nom à vos besoins
    szSQL = 'SELECT * FROM [' & Feuille & '$];'

    Set rsData = New ADODB.Recordset
    rsData.Open szSQL, szConnect, adOpenForwardOnly, _
        adLockReadOnly, adCmdText
    ''' Vérifie qu'on a bien reçu des données
    If Not rsData.EOF Then
        Feuil1.Range('A1').CopyFromRecordset rsData
    Else
        MsgBox 'Aucun enregistrement renvoyé.', vbCritical
    End If
    ''' On nettoie pour finir...
    rsData.Close
    Set rsData = Nothing
End Sub

Voili voilou.

Au fait une petite recherche sur ADO sur le site t'aurais certainement fait tomber sur un post de MichelXLD (sauf erreur de ma part) qui explique tout cela en long en large et en travers.

Bon courage quand même.
 

Discussions similaires

Réponses
2
Affichages
238

Membres actuellement en ligne

Statistiques des forums

Discussions
312 802
Messages
2 092 249
Membres
105 316
dernier inscrit
cyrille225