Bonjour a tous,

Je viens discuter avec vous de la démarcation des produit hautement technologique dans un marché mondial qui s’essouffle !

Comment ça ce n'est pas le sujet du forum ??

Plus sérieusement je me permet de venir vous demander de l'aide et quelques conseils, car étant débutant en VBA j'ai un peu de mal ....

Mon probléme est assez simple, je souhaiterias utiliser la fonction INDIRECT pour aller rechercher de l'information ( le contenue d'une cellule) dans un classeur fermé.

J'entend déja tout les maitres du forum crier a l'heretique et me promettre le bucher car ce que je demande est impossible ! Ne vous en faites pas, je le sais ^^ ! J,ai fait quelque recherche et je suis méme pas par les FAQ (Waaaaaaaaaa).

Je travaille actuellement sur Excel 2007 et j'utilise le code trouvé dans la FAQ :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Function LireCellule_ClasseurFerme( _
        Chemin As String, _
        Fichier As String, _
        Feuille As String, _
        Cellule As Variant) As Variant
 
    Application.Volatile
 
    Dim Source As Object, Rst As Object, ADOCommand As Object
    Dim Cible As String
 
    Feuille = Feuille & "$"
    Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
        Cellule.Address(0, 0, xlA1, 0)
 
    Set Source = CreateObject("ADODB.Connection")
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & "\" & Fichier & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"
 
    Set ADOCommand = CreateObject("ADODB.Command")
    With ADOCommand
        .ActiveConnection = Source
        .CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
    End With
 
    Set Rst = CreateObject("ADODB.Recordset")
    '1 = adOpenKeyset, 3 = adLockOptimistic
    Rst.Open ADOCommand, , 1, 3
    Set Rst = Source.Execute("[" & Feuille & Cible & "]")
 
    LireCellule_ClasseurFerme = Rst(0).Value
 
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
End Function
je vois deja les sourires ce formé sur les visages, car oui, ce code ne marche pas sous exel 2007, du moins pas avec les extentions .Xlsm, j'ai fait le test avec des fichier .xls, ca marche impec !
J'ai bien essayé de changer l'Extended Properties mais sans résultats probant, mis a par que ca ne marchais plus sur aucune des deux extensions ......

Quelqu'un pourrait'il eclairer ma lanterne ?

J'ai 200 cellules a remplir grâce a cette superbe fonction, seulement ça rame .....

J'utilise donc une macro empêchant le calcul auto de la page, car j'ai absolument besoin du calcul auto dans les autres classeurs sur lesquels je travail.

le code que j'utilise est le suivant :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Sub Workbook_Open()
Worksheets("Etat_actions").Activate
 
Dim i As Integer
 
For i = 1 To ThisWorkbook.Sheets.Count
 
Sheets(i).EnableCalculation = False
 
Next i
 
end sub
et je met a la feuille a jour avec un bouton dont le code est le suivant :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Sub miseajour()
 
ActiveSheet.EnableCalculation = True
ActiveSheet.Calculate
ActiveSheet.EnableCalculation = False
 
End Sub
Pour l'instant ça fonctionne, ça rame a la mise a jour et a l’ouverture, mais ça ne rame qu'a se moment la, donc c'est acceptable....

Maintenant si quelqu'un a mieux, je prend, mais je le redit, je débute, donc pour le moment je trifouille des codes trouver a droite a gauche et j'utilise l'enregistreur de macro mais c un peu prés tout !

Je peux sans problème joindre les fichier pour ceux qui voudrais y regarder de plus prés !

Merci d'avance pour votre aide et bonne journée a tous !

Rhapso