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

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Points : 1
    Points
    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 éclairé
    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
    Points : 847
    Points
    847
    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 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 360
    Points
    34 360
    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.

  4. #4
    Membre éclairé
    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
    Points : 847
    Points
    847
    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, 14h47
  2. Réponses: 3
    Dernier message: 17/11/2006, 14h35
  3. Réponses: 3
    Dernier message: 23/09/2006, 15h19
  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, 22h42
  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, 15h11

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