IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment remplacer la fonction indirect pour un fichier fermé ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Par défaut Comment remplacer la fonction indirect pour un fichier fermé ?
    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

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir dans ce tuto 1 2

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Par défaut
    Je suis bien allé voir ces tuto, merci pour la réponse Kiki29, cependant, j'aimerais vraiment pouvoir utiliser le principe de l'adresse variable, sachant que je dois récupérer l'information dans plus de 50 fichiers différents et a chaque fois le contenue de 4 cellules.

    Actuellement je gère ainsi des actions sur des machines et il suffit de sélectionner la machine dans une liste déroulante pour l'ajouter au suivit des action en cours, car toute la construction de l'adressage se construit automatiquement.

    Je ne sais pas si je suis très clair, ce que je veut dire c'est que j'etait deja aller voir ton tuto numéro 2 sans y trouver une meilleur solution que celle que j'ai exposer plus haut, le tuto numéro 1 je ne l'avais pas encore vu, et je viens d'essayer de modifier mon code en fonction de ce que je comprenais sans aboutir au fonctionnement de la fonction ....

    Pourrais tu m'en dire un peu plus s'il te plait ?

    merci

    Rhapso

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Par défaut
    Bonjour a tous,

    Voila deux jour que je bataille pour mettre a jour mes cellules mais sans résultat, impossible de faire marcher ma fonction ........ et j'ai pourtant suivit tout vos conseils mais un truc doit m’échapper !

    Quelqu'un pourrait-il m'aider ?? please !

Discussions similaires

  1. Comment remplacer des fonctions MySQL/PHP en Delphi
    Par Sundark dans le forum Débuter
    Réponses: 7
    Dernier message: 23/05/2008, 09h39
  2. Comment créer une source DSN pour un fichier text
    Par ahouba dans le forum Access
    Réponses: 3
    Dernier message: 08/01/2007, 11h51
  3. Comment utiliser les fonctions d'un autre fichier?
    Par zuzuu dans le forum Général Python
    Réponses: 8
    Dernier message: 14/12/2006, 18h22
  4. Réponses: 6
    Dernier message: 22/05/2006, 13h54
  5. Comment remplacer une fonction d une touche clavier
    Par dominic75 dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 10/04/2006, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo