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 :

Rechercher, lire dans un classeur fermé. [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien de laboratoire routier
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Technicien de laboratoire routier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 32
    Points
    32
    Par défaut Rechercher, lire dans un classeur fermé.
    bonjour à tous.
    En m'inspirant du tutoriel qui est sur votre site.http://silkyroad.developpez.com/VBA/ClasseursFermes/#
    je cherche à écrire une macro qui me permettrait de rechercher dans la première colonne, d'un classeur fermé, une valeur (numéro d'affaires)et de me renvoyer les valeurs contenues dans les colonnes correspondantes.
    De plus, il est possible que mon numéro d'affaire existe sur plusieurs lignes ( dans la même colonne), dans ce cas je veux pouvoir sélectionner la plus récente de ces lignes.
    J'aurais besoin d'aide pour formuler cette requête.
    En vous remerciant d'avance.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 389
    Points : 2 022
    Points
    2 022
    Par défaut
    Ça m'a l'aire d'être une simple requête, qu'il suffit de trier:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT numero_affaires, colonne1, colonne2, colonne3.....
    FROM classeur_fermé
    ORDER BY numero_affaires, date_affaire

    Pour chaque numéro d'affaire, la 1er ligne sera la plus récente.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien de laboratoire routier
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Technicien de laboratoire routier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 32
    Points
    32
    Par défaut
    Merci de votre réponse aussi rapide.
    Pourriez-vous me donner plus d'explications au sujet des lignes que vous me proposez car je suis perdu. je cherche à retrouver dans mon classeur fermé, si il existe, le numéro d'affaires contenues à la cellule A2 de mon classeur ouvert, afin de pouvoir récupérer certaines données du classeur fermé.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 975
    Points : 29 009
    Points
    29 009
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu affichais déjà la procédure que tu as écrite.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    cette requête te retourne la dernière lignes lier aux N° d’affaires!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql = "SELECT Frm.numero_affaires, Last(frm.colonne1) as DernierColonne1 FROM [Feuil1$] as Frm GROUP BY Frm.numero_affaires;"
    Dernière modification par Invité ; 21/01/2015 à 11h42.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Technicien de laboratoire routier
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Technicien de laboratoire routier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 32
    Points
    32
    Par défaut
    Au vu des réponses, je crois avoir compris que les requêtes s’exécute en SQL et non en VBA, ca explique beaucoup de chose
    Si c'est bien ça, il faut que j'apprenne un nouveau langage. Auriez vous des pistes par ou commencer ?
    voici mon 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
    Sub RequeteClasseurFerme()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, SQL As String
        Dim Rst As ADODB.Recordset
     
        'Définit le classeur fermé servant de base de données
        Fichier = "C:\Users\***\Documents\Developement\Carotage\Recapitulatife carotage.xls"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Feuil1"
     
        Set Cn = New ADODB.Connection
     
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open
        End With
        '-----------------
     
        'Définit la requête.
     
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
    End Sub

  7. #7
    Invité
    Invité(e)
    Par défaut
    http://sql.developpez.com/
    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
    Sub RequeteClasseurFerme()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, SQL As String
        Dim Rst As ADODB.Recordset
     
        'Définit le classeur fermé servant de base de données
        Fichier = "C:\Users\***\Documents\Developement\Carotage\Recapitulatife carotage.xls"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Feuil1"
     
        Set Cn = New ADODB.Connection
     
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open
        End With
        '-----------------
     dim Requete= new Adodb.Recordset
    Sql = "SELECT Frm.numero_affaires, Last(frm.colonne1) as DernierColonne1 FROM [Feuil1$] as Frm GROUP BY Frm.numero_affaires;"
    Requete.open Sql,Cn
    Sheets("Feuil1").Range("A2").CopyFromRecordset Requete
    
        'Définit la requête.
     
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
    End Sub

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Technicien de laboratoire routier
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Technicien de laboratoire routier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 32
    Points
    32
    Par défaut
    bonjour à tous.
    Je vous prie d'excuser mon manque de réponse à ce sujet. D'autres dossiers brûlants sont arrivés et je n'ai pas eu le temps de me replonger sur vos réponses. Je vais corriger cela au plus vite

    Merci rdurupt, pour ta réponse mais dans le code que tu m'as proposé j'ai un problème avec la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim Requete= new Adodb.Recordset
    qui me donne une erreur de compilation, syntaxe.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Oui dessolé une syntaxe nul a chier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim Requete as new Adodb.Recordset

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche v dans un classeur fermé avec variable
    Par JonathanF dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/02/2013, 16h47
  2. Lire dans des classeurs fermés Excel2007 xlsx et xlsm
    Par SilkyRoad dans le forum Contribuez
    Réponses: 0
    Dernier message: 26/08/2007, 16h59
  3. recherche d'info dans des classeurs fermé
    Par gerald57 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/08/2006, 20h04

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