Lecture de classeur excel fermé

Résolu
Coco334 -  
 juste merci -
Bonjour,

Je voudrais faire une macro qui lis une feuille Excel fermée et qui calcule l'écart type d'une plage de donnée de cette feuille pour l'écrire dans la feuille ouverte avec laquelle je cré ma macro. Je débute en VBA et ce problème ne m'a pas l'air simple, est ce que vous auriez des idées ou des suggestions.

Merci d'avance

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    ci desous exemple extraction fichier fermé avec technologie ADO
    les 2 classeurs sont dans le m^me dossier et ion extrait du classeur "depart" en "feuil1" les cellules B2 à B1000 vers le classeur ouvert avec un début en C3 .

    Sub extraire_ado()
    Dim Source As Object, Requete As Object
    Dim chemin As String
    Dim Onglet As String, Plage As String
    Dim Texte_SQL As String
    
    chemin = ThisWorkbook.Path
    fichier = "depart.xls"
    Onglet = "feuil1"
    Onglet = Onglet & "$"
    Plage = "B2:B10000"
    
    Set Source = CreateObject("ADODB.Connection")
        Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & chemin & "\" & fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
        
    Texte_SQL = "SELECT * FROM [" & Onglet & Plage & "]"
        Set Requete = CreateObject("ADODB.Recordset")
        Set Requete = Source.Execute(Texte_SQL)
        
    Range("C3").CopyFromRecordset Requete
        
      
    Requete.Close
    Set Requete = Nothing
    Source.Close
    Set Source = Nothing
    
    End Sub

    5
    1. juste merci
       
      un grand merci !!!
      même avec plusieurs mois de retard... ça vient de me débloquer mon pb et je pense de me faire gagner un temps fou !!!
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour, tu ne débutes pas par le plus aisé!...

    cette macro, dite de Walkenbach pourrait être une piste

    Sub lire_ferme()
    Dim chemin As String

    chemin = ThisWorkbook.Path
    Range("A3") = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R1C1")
    Range("B4") = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R2C2")
    Range("C8") = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R5C3")
    Range("E9") = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R7C4")
    End Sub

    elle extrait dans ton classeur ouvert les cellules de la feuil1 A1 (R1C1)en A3, B2(R2C2) en B4 etc.
    tu pourrais traiter cela par une boucle si tes cellules sont jointives
    for cptr=1 to...
    cells(cptr,1) = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R" & cptr & "C1")

    sinon, le mieux est d' utiliser ADO si tu as beaucoup de données, mais...
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Je peux rien te dire: je suis trop nul pour Coco
    0
  4. Coco334
     
    Merci pour votre réponse facile j'ai pu trouver une solution en écrivant directement dans la feuille excel.
    -1
    1. tshady
       
      tu pourrais me dire si ca fonctionne vraiment a classeur fermé
      je souhaite extraitre les données d'une feuille fermer vers un feuille ouverte sans avoir à ouvrir la source
      0