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

VBA Access Discussion :

utilisation des filtres excel avec une macro access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Par défaut utilisation des filtres excel avec une macro access
    Bonjour,

    J'ai un petit problème avec ma macro access, je voudrais pouvoir utiliser une macro qui filtre un fichier excel (le filtre agis sur la première colone de mon fichier excel et enlève les lignes vide). voici le code que j'ai qui ne fonctionne pas je pense que la selection le réussi pas a agit sur le fichier excel, si quelqu'un aurais une solution, je sui preneur^^

    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
    Private Sub Commande0_Click()
    Dim oApp As Object
    Dim oWkb As Object
    Dim oWSht As Object
    
    Set oApp = CreateObject("excel.application")
    Set oWkb = oApp.Workbooks.Open("U:\Fichiers Synchronisés\Programme UPR DT AQ.xls")
    Set oWSht = oWkb.Worksheets("PGR ADSL")
    
    'selectionne les cellules qui ne sont pas vide
     selection.autofilter Field:=1, Criteria1:=""
    
    'premier ligne ou tu commence ton import
    i = 19
     
    'pour éviter les messages lors de l'ajout des enregistrements
    DoCmd.SetWarnings False
     
    'tant que la cellule n'est pas vide
    While oWSht.Range("A" & i).Value <> ""
     
    cSQL = "insert into [TableTest] ( [champ1], [champ2], [champ3], [champ4], [champ5]) values (" & Chr(34) & oWSht.Cells(i, 1) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 2) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 3) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 4) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 5) & Chr(34) & ")"
    
    
    'exécute la requète
      DoCmd.RunSQL cSQL
      
     
      i = i + 1
    Wend
    
    DoCmd.SetWarnings True
    End Sub

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Par défaut
    Bonjour et bienvenu sur le forum,

    Ton code commance par "Selection.auto.... " mais tu ne sélectionne rien.
    Je te conseil de renplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oWSht.Columns("A:A").autofilter Field:=1, Criteria1:=""
    si c'est bien sur la colonne A que tu veux appliquer ton filtre.

    De plus il n'est pas utile (contrairement à ce que fait l'enregistreur de macro) de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Machintruc.select
    Selection.fairececi
    Il vaut mieux faire :

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    Bonjour,

    pour compléter ce que dit Muhad'hib, il est non seulement inutile de passer par un Select, mais surtout que la notion de selection ne fonctionne pas sous Access .

    Quant à l'objectif de ton code, j'ai une auter approche à te proposer :
    - importer en bloc le fichier Excel
    - supprimer les lignes qui ne "t'intéressent" pas

    > ca prendra 3 voire 4 lignes de code au lieu d'un traitement long et où les erreurs sont vite arrivées.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Par défaut
    Euh je pense que cela fonction mais ce n'est, je trouve, pas élégant.
    En plus pendant l'execution du programme, l'écran joue au kaléidoscope (faut pas être épileptique ...)
    Mais cela fonctionne.
    D'ailleur un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    oWSht.Columns("A:A").select
    oWSht.selection.autofilter Field:=1, Criteria1:=""
    devrait fonctionner (pas testé)


    Par contre, je te rejoins complétemant concernant la méthode préconisée

Discussions similaires

  1. [XL-2003] Coment filtrer sur des dates dans Excel avec une macro
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/03/2010, 15h47
  2. Réponses: 3
    Dernier message: 17/11/2006, 15h35
  3. Réponses: 3
    Dernier message: 23/09/2006, 16h19
  4. Insérer des données Excel dans une table ACCESS
    Par anikeh dans le forum Access
    Réponses: 4
    Dernier message: 21/12/2005, 23h42
  5. Insérer des données Excel dans une base Access ?
    Par MaTHieU_ dans le forum Access
    Réponses: 3
    Dernier message: 22/06/2005, 16h11

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