Macro : Lire une donnée sans ouvrir le fichier

  • Initiateur de la discussion Initiateur de la discussion roidurif
  • 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 !

roidurif

XLDnaute Occasionnel
Bonjour,

Comment lire une donnée d’un fichier Excel sans l’ouvrir ?
Je m’explique, dans chaque fichier, il existe en cellule H22 une données. J’aimerais lire cette donnée pour ensuite l’utiliser dans le nom de l’enregistrement de mon fichier.
Exemple :

En H22 du fichier.xls = P05852
Le Nom d’enregistrement doit être P05852-fichier.xls

Code:
Sub Recup()

Dim Onglet As Variant
Dim NomFic As Variant
Dim A As String

Onglet = "Feuille de saisie"
ref = "H22"
pceJointe = "Fichier.xls"

NomFic = pceJointe
A = NomFic & Onglet & "'!" & ref
pceJointe.SaveAsFile "C:\Documents\" & A & "-" & pceJointe

End Sub

Merci de votre aide.
 
Re : Macro : Lire une donnée sans ouvrir le fichier

Salut RoiDuRif 😉

Tu peux utiliser la méthode ADO
Code:
Sub test()
Dim fich$, feuil$, Cell As Range
  fich = "D:\TestADO.xls"
  feuil = "feuil1"
  Set Cell = Range("A1")
  MsgBox GetValueWithADO(fich, feuil, Cell)
End Sub

Function GetValueWithADO(Classeur$, Feuille$, Cell As Range)
'renvoie la valeur de la cellule Cell de la feuille Feuille
'du classeur fermé Classeur
Dim RcdSet As Object
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range
  
  'prépare une "base de données" bidon pour la clause SELECT
  '(une entête fictive et une ligne de données)
  Set dummyBase = Cell.Resize(2)
  
  'prépare les commandes ADO et SQL
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & Classeur & ";" & _
                "Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"";"
  strCmd = "SELECT * FROM [" & Feuille & "$" & dummyBase.Address(0, 0) & "]"
  
  'crée l'objet Recordset
  Set RcdSet = CreateObject("ADODB.Recordset")
  
  'va chercher l'info
  RcdSet.Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText
  
  'et la renvoie
  GetValueWithADO = Application.Clean(RcdSet(0))
  'autre syntaxe possible
'  GetValueWithADO =Application.Clean(RcdSet.GetString(NumRows:=1))
  
  'nettoyage
  Set RcdSet = Nothing
End Function

A+
 
Re : Macro : Lire une donnée sans ouvrir le fichier

Bonjour à tous,

sinon, sans ADO :

Code:
Dim Chemin As String, Fich As String, Feuil As String, Cell As String, Result
'Si AA1 est une cellule vide
    Chemin = "D:\"
    Fich = "TestPasADO.xls"
    Feuil = "Feuil1"
    Cell = "$A$1"
    Range("AA1").Formula = "='" & Chemin & "[" & Fich & "]" & Feuil & "'!" & Cell
    Result = Range("AA1").Value
    Range("AA1").ClearContents
    MsgBox Result
 
Re : Macro : Lire une donnée sans ouvrir le fichier

Bonjour,

Je viens d'ajuster la macro sans ADO dans la mienne (VBA OUTLOOK), mais j'ai un message d'erreur "Erreur de compilation Sub ou fonction non définie" quand il arrive à la ligne extraire donnée :
Code:
ExtraireValeur = ExecuteExcel4Macro(Argument)

Je ne vois pas ce que cela veux dire;
Je joins egalement la macro complete ci-dessous pour votre aide :


Code:
Option Explicit

Sub Essai()
    Extraction "En attente", "a.l@gmail.com"
    End Sub
    
Sub Extraction(NomDossier As String, Expediteur As String)
    Dim olApp As Outlook.Application
    Dim olSpace As Outlook.NameSpace
    Dim olFolder As Outlook.MAPIFolder
    Dim OLinbox As Outlook.MAPIFolder
    Dim olmail As Outlook.MailItem
    Dim pceJointe As Outlook.Attachment
    Dim MonBody As String, MonNum As String
    Dim y As Integer, x As Integer
    Dim nom As Variant
    Dim Argument As String
    Dim sDossier As String, sFichier As String, sFeuille As String
    Dim Valeurextraite As String
    
        
    
    Set olApp = New Outlook.Application
    Set olSpace = olApp.GetNamespace("MAPI")
    Set OLinbox = olSpace.GetDefaultFolder(olFolderInbox)
    Set olFolder = OLinbox.Folders(NomDossier)
 
 
 Dim Chemin As String, Fich As String, Feuil As String, Cell As String, Result

For Each olmail In olFolder.Items
        If olmail.SenderEmailAddress = Expediteur And _
            Not olmail.Attachments.Count = 0 Then
            

    
    
            For y = 1 To olmail.Attachments.Count
                 Set pceJointe = olmail.Attachments(y)
                 x = x + 1

                
                sDossier = ""
                sFichier = pceJointe
                sFeuille = "Feuil1"
                
                
                Valeurextraite = ExtraireValeur(sDossier, sFichier, sFeuille, "A1")

                pceJointe.SaveAsFile "C:\Users\Desktop\" & Valeurextraite & "-" & pceJointe
                Set pceJointe = Nothing
              
            Next y
        End If
        
    Next olmail


End Sub

Private Function ExtraireValeur(ByVal Dossier As String, ByVal Fichier As String, ByVal Feuille As String, ByVal Cellule As String)

Dim Argument As String
   
    Argument = "'" & Dossier & "[" & Fichier & "]" & Feuille & "'!" & "R1C1"
    ExtraireValeur = ExecuteExcel4Macro(Argument)
End Function

J'ai passé le week end a cherché et je m'arrache les cheveux.

Merci d'avance
 
Dernière édition:
Re : Macro : Lire une donnée sans ouvrir le fichier

Bonjour,

Pensez-vous qu'il est possible de faire ce que je souhaite via VBA outlook ?

En tout cas, si j'utilise la fonction ci-dessous, j'ai ce message d'erreur "Erreur de compilation Sub ou fonction non définie".

Code:
ExtraireValeur = ExecuteExcel4Macro(Argument)

ou si j'utilise le code ADO, arrivant à la ligne ci-dessous, il me dit impossible de lire car le fichier en lecture seule.

Code:
'va chercher l'info
  RcdSet.Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText

Je rappel que mon but est de lire une celulle d'une PJ d'un mail fermé, puis enregistré la PJ au nom de la celulle dans mon disque local.

Je vous remercie de votre aide.

Si d'autre proposition, je suis preneur.

Merci
 
Dernière édition:
- 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

Discussions similaires

A
Réponses
2
Affichages
1 K
AlexAGEMS
A
S
Réponses
6
Affichages
2 K
soNZOOO
S
Retour