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

Excel Discussion :

recuperer les donnees d'un fichier fermé et les utiliser dans une listview d'un nouveau fichier


Sujet :

Excel

  1. #1
    Membre averti
    Homme Profil pro
    agent sncf
    Inscrit en
    Mars 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : agent sncf
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2018
    Messages : 35
    Par défaut recuperer les donnees d'un fichier fermé et les utiliser dans une listview d'un nouveau fichier
    Bonjour le forum

    voilà, j'ai deux fichiers

    1 fichier = filtrage

    2 fichier =Notes

    J'ai lu qu'il est possible d'ouvrir un nouveau classeur avec une base de données d'un classeur fermé.

    A l'ouverture du fichier Filtrage est déjà fait (onglet " Trier")

    avec cette feuille, il ouvre un classeur nommé Notes, ces données sont mis dans un userfrom "programme" à l'ouverture du fichier.

    FILTRAGE.xlsm
    Notes.xlsm

    Cordialement

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour

    Tu n'utilises que très peu les tableaux structurés, ce qui est dommage

    Je conseille :
    De ne pas effectuer le filtre avancé dans le classeur FILTRAGE.xlsm mais mettre la zone des critères sous forme de tableau structuré nommé Criteres (il faut effacer tes noms actuels afin de définir Criteres de portée classeur).
    Pour info avec un tableau structuré le code de filtre serait
    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
    'On efface la feuille trier
     ThisWorkbook.Worksheets("Trier").Cells.ClearContents
     
    'declaration des variables
     Dim Plage As Range
     Dim Criteres As Range
     Dim Copy As Range
     
     'Affectations des variables
    Set Plage = Range("TBase").ListObject.Range
    Set Criteres = Range("Criteres").ListObject.Range
    Set Copy = ThisWorkbook.Worksheets("Trier").Range("A1")
     
    'On lance l'outil filtre avancé
    Plage.AdvancedFilter xlFilterCopy, Criteres, Copy
    A la place on utilise une requête PowerQuery dans le classeur Notes s'actualisant à l'ouverture du classeur
    Un onglet contient un tableau structuré nommé Fichier avec le chemin du classeur FILTRAGE

    Nom : Chemin.jpg
Affichages : 60
Taille : 17,7 Ko

    Le requête utilise le tableau structuré Tbase et le filtre avec Critreres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    let
        Source = Excel.CurrentWorkbook(){[Name="Fichier"]}[Content],
        Classeur = Table.AddColumn(Source, "Fic", each Excel.Workbook(File.Contents([Fichier]), null, true)),
        Contenu = Table.ExpandTableColumn(Classeur, "Fic", {"Name","Data"}),
        Crit = Table.SelectRows(Contenu, each ([Name] = "Criteres")),
        Criteres = Table.ExpandTableColumn(Crit, "Data", {"ESV", "Date"}, {"ESV", "Date"}),
        Personnalisé2 = Table.SelectRows(Contenu, each ([Name] = "Tbase")),
        #"Autres colonnes supprimées" = Table.SelectColumns(Personnalisé2,{"Data"}),
        #"Data développé" = Table.ExpandTableColumn(#"Autres colonnes supprimées", "Data", {"ESV", "Semaine", "Date", "Tournée", "Sillon", "Dép", "Arr", "UIC", "Parcours /  Acheminement", "R", "N°#(lf)Ligne", "Voie", "Pk.Dép", "Pk.Arr", "Distance", "GARAGES"}, {"ESV", "Semaine", "Date", "Tournée", "Sillon", "Dép", "Arr", "UIC", "Parcours /  Acheminement", "R", "N°#(lf)Ligne", "Voie", "Pk.Dép", "Pk.Arr", "Distance", "GARAGES"}),
        #"Requêtes fusionnées" = Table.NestedJoin(#"Data développé", {"ESV", "Date"},Criteres, {"ESV", "Date"}, "Data développé", JoinKind.Inner),
        #"Colonnes supprimées" = Table.RemoveColumns(#"Requêtes fusionnées",{"Data développé"})
    in
        #"Colonnes supprimées"

    Dans Private Sub UserForm_Initialize() de PROGRAME

    On modifie une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Extraction = [Extrait].ListObject.DataBodyRange
    EDIT
    Dans Private Sub UserForm_Initialize() de SILLONS_RT
    On modifie 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          recherche = [Extrait].ListObject.DataBodyRange.Value '0n import les données de la journée a partir de la derniére ligne
           madate = recherche(1, 3)
    Peut-être serait-il plus intéressant de définir les critères directement dans Notes ?

  3. #3
    Membre averti
    Homme Profil pro
    agent sncf
    Inscrit en
    Mars 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : agent sncf
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2018
    Messages : 35
    Par défaut
    Bonjour 78chris,

    j'allais vous répondre mais j'essaie de comprends vos codes

    étant pour ainsi dire novice dans le vba

    c'est très compliqué de mettre en œuvre vos dires.

    J'aimerai avoir un fichier avec le programme de mon taf afin de pour mettre à jour plus simplement

    Aujourd'hui, j'ai deux fichiers qui font la même chose au démarrage

    voila le pourquoi pas donné de réponse

    Cordialement

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    RE

    J'ai indiqué quelles lignes modifier dans TES codes

    Le reste utilise PowerQuery qui existe depuis 2010 et remplace de plus en plus VBA

    J'ai mis en commentaires la plupart de tes procédures (je ne souhaite pas qu'elles s'exécutent sur mon PC) sauf les 2 citées.
    Tu pourras les "décommenter" sur ton PC

    Dans l'onglet PQ (que tu pourras remettre en veryHidden), change le chemin d'accès à gauche, puis clic droit dans le tableau de droite, Actualiser.

    La requête est paramétrée pour s'actualiser à l'ouverture du classeur donc les autre ouvertures ne poserons pas de problème et les données se mettront à jour si le chemin est correct
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. API tipee stream , récupérer les info dans une base de donnée
    Par splintermik dans le forum APIs Réseaux sociaux
    Réponses: 0
    Dernier message: 18/08/2019, 16h51
  2. récupération des données pour les afficher dans une ListView
    Par khoukha1 dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 14/06/2012, 14h59
  3. récupérer les paramètres dans une url
    Par asetti dans le forum ASP
    Réponses: 6
    Dernier message: 23/12/2005, 10h08
  4. Réponses: 7
    Dernier message: 14/09/2005, 10h50
  5. Réponses: 5
    Dernier message: 25/07/2005, 14h03

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