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 :

VBA - Filtre d'une table et extraction de quelques colonnes dans un autre classeur [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Par défaut VBA - Filtre d'une table et extraction de quelques colonnes dans un autre classeur
    Bonjour

    J'ai besoin de produire régulièrement des "états d'avancement", à partir d'une base de données d'actions.
    La base contient 58 colonnes et plus de 200 lignes.
    Besoins relatifs aux "états d'avancement"
    - ils ne contiennent que 6 colonnes disposées dans un ordre différent de celui de la base d'actions
    - ils sont le résultat d'un filtre sur un des champs de la base d'actions
    - les résutats sont exportés dans un fichier séparé (pour être envoyé aux différentes parties prenantes, par la suite)


    J'ai trouvé exactement la solution qu'il me faut dans un forum mais je rencontre un problème de mise en oeuvre.
    - la macro est placée dans le fichier de la base d'actions
    Base d'actions (fichier source):
    - la base d'actions occupe 200 lignes, mais je lui en ai affecté 1000 --> plage (A1:BF1000)
    - le critère du filtre se trouve dans la plage (BJ1:BJ2) --> BJ1 contient l'intitulé de l'en-tête de colonne et BJ2 contient la valeur du filtre
    Etat (fichier cible):
    - Intitulé du fichier: ImportFiltre.xls
    - Intitulé de l'onglet : Cible
    - Les en-têtes sont prédéfinies dans la plage A1:F1

    Problème:
    - Erreur d’exécution 1001 « ImportFiltre.xls est introuvable. Vérifier l’orthographe du nom du classeur et la validité de l’emplacement. »
    - la ligne surlignée en jaune est : Worbooks.Open ("ImportFiltr.xls")
    L’orthographe du nom du fichier est correcte, mais la macro ne précise pas l’emplacement du fichier.
    Celui ce trouve dans le même répertoire que celui de la base d’action.

    Question : comment indiquer l'emplacement du fichier ? (cf. code de la macro actuelle)

    D'avance merci pour votre aide !
    Marino


    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
    Sub Macro3()
    '
    ' Filtre avancé et extraction dans un autre classeur
    
      ' le classeur cible existe : "ImportFiltre.xls"
      ' le classeur cible contient les en-têtes de colonne à extraire en A1:F1
      ' la Macro est placée dans le fichier source
      
      nf = ActiveWorkbook.Name
      ChDir ActiveWorkbook.Path
      Application.DisplayAlerts = False
      Workbooks.Open ("ImportFiltre.xls")  
      Windows(nf).Activate
      
      Range("A1:BF1000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("BJ1:BJ2"), CopyToRange:=Workbooks("ImportFiltre.xls").Sheets("Cible").Range("A1:F1"), Unique:=False
    
    '
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Mon Excel 2010 est une vraie tête de cochon quand il s'agit d'ouvrir un classeur ou de faire un paquet d'autres opérations. Quand c'est du pilotage d'une autre application, il lui faut les paramètres entre parenthèses. Quand ce n'est pas du pilotage, il ne prend que les paramètres nommés.

    Je ne serais pas surpris que ce soit la même chose pour le tien. Commence avec cela, d'un coup que cela marcherait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    workbooks.open filename:="ImportFiltre.xls"
    ou même, pour être "plus sûre", avec le chemin d'accès au complet.

  3. #3
    Membre confirmé
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Par défaut
    Bonjour clementmarcotte,

    J'ai suspendu mes essais pendant quelques temps... et te remercie donc tardivement de l'attention que tu as portée à mon problème.

    Pour clore cette discussion,
    Voilà ce que j'ai finalement utilisé pour que la macro placée dans le fichier source, trouve et ouvre le fichier destinataire(fichier qui accueillera les données exportées après filtre) puis l'enregistre sous un nom specifique (même nom + date et heure).
    Les fichiers source et destinataire sont tous deux placés dans un même répertoire.

    Cordialement
    Marino

    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
    ' 
    Etape 1 : Déclarer les fichiers sans Chemin d'accès, car tous dans le même répertoire
      Dim Chemin As String, FichierDestinataire As String, NouveauFichier As String
     
      Chemin = ThisWorkbook.Path & "\"
      FichierSource = ThisWorkbook.Name
      FichierDestinataire = "RapportAudit.xls"
      NouveauFichier = "RapportAudit_" & Format(Date, "dd-mmmm-yyyy") & "_" & Format(Time, "hh-mm-ss") & ".xls"
     
      ' Etape 2 : Ouvrir le 2eme fichiers (cible), le 1er est déjà ouvert (Origine) car c'est celui de la macro
      Workbooks.Open Chemin & FichierDestinataire
     
    .../...(déploiement de la macro)
     
    ' Etape 7 : Sauvegarder sous le nom défini pour NouveauFichier
      Destinataire.SaveAs Chemin & NouveauFichier

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

Discussions similaires

  1. Créer une liste de filtre en VBA à partir d'une table de nomenclature
    Par nathieb dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/12/2014, 16h46
  2. Réponses: 2
    Dernier message: 07/12/2007, 15h20
  3. [VBA]Filtre sur une date
    Par illight dans le forum SDK
    Réponses: 2
    Dernier message: 09/11/2006, 09h45
  4. [SQL Server] Filtré sur une table avant une jointure externe
    Par TangoZoulou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/11/2006, 15h52
  5. VBA acces a une table
    Par laurent1 dans le forum Access
    Réponses: 2
    Dernier message: 13/12/2005, 22h10

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