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 :

Recherche adresse et valeur dans fichier fermé


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut Recherche adresse et valeur dans fichier fermé
    Bonjour à tous

    Voilà plusieurs jours que je suis en panne. Je recherche le moyen de trouver l'adresse et la valeur d'une cellule dans un fichier fermé.
    J'ai une valeur dans une variable, que je dois trouver dans la colonne A de la feuille 1 d'un fichier fermé.
    Une fois trouvée, je dois récupérer l'adresse et la valeur de la cellule en G de cette même ligne. Exemple :

    Dans fichier fermé :
    A B C D E F G
    1
    2 - - - - - 50
    3
    4

    J'ai var="2" je dois récupérer :
    Trouve.adresse = G2
    Trouve.valeur = 50

    J'emploie ce code :
    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
    40
    41
    42
    Sub DonneesRECHERCHEESClasseursFermes()
        Dim Source As ADODB.Connection  'activer la référence Microsoft ActiveX Data Objects x.x Library
        Dim Rst As ADODB.Recordset
        Dim ADOCommand As ADODB.Command
        Dim Feuille1 As String
        Dim Fichier As String
        Dim Var As String
        Dim maplage As Range
     
        Var = "2"	'qui peut être string ou integer…..
        maplage = "A1:G4"
        Feuille1 = "Feuil1$"
        Fichier = "C:\Base.xls"
     
        Set Source = New ADODB.Connection
        Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
        Set ADOCommand = New ADODB.Command
        With ADOCommand
            .ActiveConnection = Source
            .CommandText = "SELECT * FROM [" & Feuille1 &  ??????????????????  & "]"
        End With
     
        Set Rst = New ADODB.Recordset
        Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
     
        Set Rst = Source.Execute("[" & Feuille1 & ??????????????????  & "]")
     
     
        Trouve.ligne = ? 	     'Rst.row   ????????
        Trouve.adresse = ?   'Rst.address   ????????
        Trouve.valeur   = ?   'Rst.Value   ????????
     
        Range("A1").CopyFromRecordset Rst.address   ????????   
        Range("A2").CopyFromRecordset Rst.Value   ????????   
     
        Rst.Close
        Source.Close
        Set Source = Nothing
        Set Rst = Nothing
        Set ADOCommand = Nothing
    End Sub
    Mais je n'arrive à rien. Je tourne en rond, et c'est agaçant.

    Et dans la même veine, comment récupère-t-on l'adresse d'une variable qui se situe dans une plage d'un fichier fermé ? avec l'exemple du début, j'ai Var = "50", je dois récupérer Trouve.adresse = G2.

    Merci d'avance de votre aide

    Eric

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous
    Bonjour jacques_jean

    J'avais déjà lu et relu ce document extrêmement bien rédigé, mais malheureusement, je n'ai pas réussi à réaliser ce que je demande. D'ailleurs ce n'est pas le seul doc que j'ai lu, parmi les autres celui de F. Sigonneau est aussi dans mes favoris, mais .....

    Merci quand même

    Eric

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour
    sans l'utilisation d'ADO, avec une fonction personalisée tu obtiens l'adresse et la valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function AdrVal(Fichier As String, Feuille As String, Mot)
    Dim c As Range
        With CreateObject("Excel.Application").Workbooks.Open(Fichier)
             Set c = .Worksheets(Feuille).Columns(1).Find(What:=Mot, LookIn:=xlValues)
    AdrVal = "l'adresse : " & c.Offset(, 6).Address & "   la valeur : " & c.Offset(, 6).Value
    .Close False
    End With
    End Function
    dans une cellule du classeur active copie cette formule.
    =AdrVal("C:\Le Classeur.xls";"Feuil1";19)

    19 est la valeur à recherchée

    Bonne journée

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonsoir à tous
    Bonsoir Abed_H

    Merci pour ta réponse rapide, mais j'ai une boîte de dialogue pour la liaison du fichier. Je l'ai adaptée en récupérant dans des variables mais c'est pareil.

    Eric

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Re
    Peux tu m’envoyé tes fichiers pour voir de plus prés le problème ?

  7. #7
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Re

    Merci de suivre mon pb. Ci-joint les 2 fichiers.

    Eric
    Fichiers attachés Fichiers attachés

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Re
    Attention pas de Guillemet et pas de modification de la fonction prend la telle quelle est. je te joins ton fichier en retour

    Bonne soirée.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous
    Bonjour Abed_H

    Désolé, mais j'ai été privé d'internet depuis hier soir, d'où ma réponse tardive.

    J'ai essayé le fichier que tu m'as réexpédié, mais pareil. Je joins les 2 boîtes de dialogues qui apparaissent une fois que je modifie la valeur à chercher. En plus le résultat tarde à arriver.

    Est il possible de le faire en VBA, quitte à passer par ADO ?

    Merci

    Eric
    Images attachées Images attachées   

  10. #10
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonsoir edelweisseric

    d'aprés Bidou la (FAQ)
    Pour empêcher la mise à jour des liaisons sans boîte de dialogue,il faut mettre le paramètre UpdateLinks de la méthode Open de l'objet Workbook à False.
    à tester : remplace cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With CreateObject("Excel.Application").Workbooks.Open(Fichier)
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With CreateObject("Excel.Application").Workbooks.Open(Fichier, UpdateLinks = False)
    Il est possible d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.AskToUpdateLinks = True
    Néanmoins cela ne supprime que la boîte de dialogue et les liaisons sont mises à jour.
    Bonne soirée.

  11. #11
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonsoir à tous
    Bonsoir Abed_H

    Avec le deuxième code, cela fonctionne, malheureusement encore un peu lent. J'ai réussi à le transformer en VBA. MERCI

    Pour la deuxième question qui était :
    Citation Envoyé par edelweisseric Voir le message
    Bonjour à tous
    Exemple :

    Dans fichier fermé :
    A B C D E F G
    1
    2 - - - - - 50
    3
    4
    Et dans la même veine, comment récupère-t-on l'adresse d'une variable qui se situe dans une plage d'un fichier fermé ? avec l'exemple du début, j'ai Var = "50", je dois récupérer Trouve.adresse = G2.
    quelqu'un a t il une idée ? mais est ce faisable ?

    Merci d'avance
    Merci Abed_H

    Bonne fin de WE à tous

    Eric

Discussions similaires

  1. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  2. recherche valeur dans fichier fermé
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/02/2008, 12h06
  3. Tiles et recherche de valeurs dans fichier properties
    Par coyote999 dans le forum Struts 1
    Réponses: 2
    Dernier message: 05/04/2007, 11h52
  4. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24
  5. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 08h26

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