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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
227
Réponses
12
Affichages
811
Réponses
38
Affichages
1 K
Retour