Trouver une valeur dans un fichier sans l'ouvrir et la recopier

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 23 janv. 2017 à 22:03
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 26 janv. 2017 à 17:49
Bonjour à tous,

Je veux faire une macro pour trouver une valeur dans une autre feuille s'en l'ouvrir.

La valeur à chercher dans cette feuille se trouve dans la cellule "A2" de ma feuille ouverte et je veux trouver la valeur qui est comprise dans le nom dans la colonne "B" de mon fichier non ouvert. ex: je cherche C28021 dans C28021-004-12. Lorsque la valeur à été trouvé dans la feuille non ouverte, je veux la copier dans le cellule "A2" de ma feuille ouverte.

J'ai essayé avec une méthode ADODB mais la je suis un peu perdu!!

Voici ce que j'ai fait, j'ai un erreur sur la ligne texte_SQL qui dit que la Déclaration existante dans la portée en cours et je ne trouve pas c'est quoi le probème:
Dim Cn As ADODB.Connection
    Dim Fichier2, texte_SQL As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset'Comparaison des deux fichiers
        '-----------------------------
        Sondage = Cells(2, 1).Value
       
        'Définit le classeur fermé servant de base de données
        Fichier2 = "M:\Entrepot\BDFS\0_Sondages_a_saisir_Geotec\" & "SONDAGE.xlsx"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "SONDAGE"
    
        Set Cn = New ADODB.Connection
    
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
             & Fichier2 & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
        End With
        '-----------------
    
        '... la requête ...
        'Value = application.vlookup(Sondage,range("B").Cells(.rows.count, 1).end(xldown)),1,1)
        texte_SQL = "SELECT*FROM*&fichier2"
        Set Rst = New ADODB.Recordset
        Rst.Open texte_SQL, Cn, adOpenStatic, adLockReadOnly
        MsgBox Rst.RecordCount & "Nombre de lignes"
        Rst.Close
        Set Rst = Nothing
        
       
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing


Pouvez-vous m'aider?

Merci!
A voir également:

4 réponses

yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
23 janv. 2017 à 22:35
bonsoir, peut-être parce que tu déclares deux fois
texte_SQL As String
?
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
24 janv. 2017 à 13:44
Merci!

Effectivement, j'me doutais bien que c'était ça l'erreur! Je viens de trouver le doublon ce matin, hier je le trouvais pas.

Maintenant, j'ai une erreur de syntaxe dans la clause FROM sur la ligne
Rst.Open texte_SQL, Cn, adOpenStatic, adLockReadOnly
.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
24 janv. 2017 à 10:01
Bonjour à tous

Tu es obligé de laisser le classeur source fermé ?
ce classeur est il une liste de données ?




0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
24 janv. 2017 à 13:53
Bonjour Michel,

J'ai effectué quelques essais avec le fichier ouvert et je n'y arrivais pas! Est-ce possible de l'ouvrir dans le voir à l'écran?

Dans ce classeur, j'ai des données dans les colonnes de A à CB, qui sont des fois des lettres, des chiffres,des dates, des lettres et des chiffres (C12004-004-09).

Ce que je veux c'est de rechercher la valeur ex: C12004 du premier classeur dans la colonne B de ce classeur qui contient les valeurs comme C12004-004-09.

Merci beaucoup!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 24/01/2017 à 14:52
J'ai effectué quelques essais avec le fichier ouvert et je n'y arrivais pas! Est-ce possible de l'ouvrir dans le voir à l'écran?
Non

tu ne répond pas mA question: ce classeur est il une liste de données ?
et si oui quel est le nom de l'ent^te de la colonne B

un texte sql se présente ainsi
nomfeuille="sondage" & "$"
Champ=???? ent^te colonne B
valeur=cells(2,1)


Select * From nomfeuille Where champ Like '*" & valeur & "*'

maintenant si tu cherches seulement le nombre de C120004 (et pas d'autres valeurs) dans la colonne B, il y a une astuce qui t'évite de passer par ADO
de plus avec 1 formule dans la feuille du classeur source et 1 ou 2 lignes de code sans ouvrir le classeur


 Michel
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
24 janv. 2017 à 15:28
Rebonjour Michel,

Désolé, qu'est-ce que tu entend au juste par liste de données?

J'ai une colonne avec plusieurs valeurs écrite sous la forme Cxxxxxx-xxx-xx. Oui, j'ai une entête de colonne qui s'appelle "NO_SONDAGE".

Non, je ne recherche pas seulement la valeur C12004, je recherche la valeur qui est dans ma cellule "A2" de mon autres classeur et qui varie.

Merci!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
24 janv. 2017 à 16:12
Désolé, qu'est-ce que tu entend au juste par liste de données?

Base de données
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
24 janv. 2017 à 16:28
Oui, c'est une extraction que j'ai fait d'une base de donnée Access en fichier Excel (.xlsx).
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
24 janv. 2017 à 16:55
Met moi ton fichier source en pièce jointe: je vais chercher car il y a longtemps que je n'ai pas fait d'adodb. ca me remettra dans le bain
Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message

Dans l’attente
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
24 janv. 2017 à 17:08
Voici mon classeur:
https://mon-partage.fr/f/DWKuFthN/

Merci beaucoup de m'aider!
0
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
24 janv. 2017 à 13:50
Bonjour,

syntaxe douteuse :
texte_SQL = "SELECT*FROM*&fichier2"

syntaxe amélioré :
texte_SQL = "SELECT * FROM *" & fichier2

K
-1
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
24 janv. 2017 à 15:30
Merci Kalissi pour la correction, mais toujours le même message d'erreur de syntaxe sur la ligne
Rst.Open texte_SQL, Cn, adOpenStatic, adLockReadOnly.
.

Encore Merci!
0