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 :

Copier les données d'une feuille d'un classeur fermé dans une feuille d'un classeur actif selon conditions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2018
    Messages : 30
    Par défaut Copier les données d'une feuille d'un classeur fermé dans une feuille d'un classeur actif selon conditions
    Bonjour,

    je cherche depuis un petit moment une macro qui me permettrais de copier:
    - Toutes les colonnes dans le même ordre d'une feuille excel d'un classeur fermé dans une autre feuille d'un classeur actif sans aucune mise en page ou conditions
    - Certaines colonnes mais pas dans le même ordre(Colonne A --> Colonne C / Colonne B --> Colonne D/...) d'une feuille excel d'un classeur fermé dans une autre feuille d'un classeur actif

    Un exemple ci-joint

    Sources : Slovenie
    Destination : Feuille1 du classeur SYNTHESE ROT ...

    Merci d'avance pour votre aide.

    Amicalement,
    H
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir
    quelque chose comme ça que j'exploite dans mon bolo :
    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 importProdVte()
    Dim wkA As Workbook, wkB As Workbook
    Dim chemin As String, fichier As String
    Dim j As Long
    Application.ScreenUpdating = False
    Set wkA = ThisWorkbook
    chemin = "Z:\TRAVAUX COMPTABLES BNA\Controle de Gestion\"
    fichier = "RAPPORT JOURNALIER.xlsx"
    Workbooks.Open chemin & fichier
    Set wkB = ActiveWorkbook
     j = wkB.Sheets("Alf3").Range("A" & Rows.Count).End(xlUp).Row
    wkA.Sheets("Vente").Range("C1:G" & j).Value = wkB.Sheets("Alf3").Range("D1:H" & j).Value
    wkA.Sheets("Vente").Range("A1:B" & j).Value = wkB.Sheets("Alf3").Range("L1:M" & j).Value
     
    wkB.Close True
    Sheets("Vente").Activate
     Application.ScreenUpdating = True
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2018
    Messages : 30
    Par défaut Malheureusement ça ne fonctionne pas :(
    Bonjour BENNASR

    Malheureusement, je viens de l'appliquer à mon cas et ça bug !
    Vous l'avez déjà testé sur les fichiers joins à mon premier post ?

    Je ne maîtrise pas VBA et je ne sais pas s'il faut mettre aussi le code dans le module ou la feuille1 !

    Merci d'avance pour votre retour et votre soutien

    Salutations
    H

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Rien de mieux que ceci, surtout pour les débutants :  Les filtres avancés ou élaborés dans Excel  …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2018
    Messages : 30
    Par défaut Désolé mais c'est hors sujet par rapport à ma demande
    Bonjour,

    j'ai regardé le liens ... rien à faire par rapport à ma demande !

    Merci comme meme !

    Cordialement,

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Et pourtant en trois lignes de code dont une pour la copie …   Enfin pour qui se donne la peine de lire et de tester !

    A moins que la demande ait été mal formulée initialement ou encore les données fort mal organisées …

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Avant de s'embarquer en VBA, il y a aussi l'importation de données (en brut ou via MSQuery) qui ne nécessite pas de VBA et qui a quand même été créée pour cela.

    PS: Le filtre avancé sur un classeur fermé (demande initiale), j'ai des doutes, mais je ne vois pas en quoi ça gêne d'ouvrir le classeur...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Salut Pierre !

    Oui mais j'ai bien indiqué l'ouverture du classeur …

    Autre voie via QueryTable (Données, import à partir d'un fichier & Enregistreur de macro)
    ou encore via ADODB (là voir le tutoriel sur l'accès aux classeurs fermés)
    mais la méthode la plus simple / efficace pour un débutant et demandant le moins de maintenance (même aucune !)
    en cas de réorganisation des données est le seul filtre avancé, en trois lignes de codes c'est réglé
    pour peu que la conception des feuilles de calculs n'ait pas été pensée avec les pieds ! 

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Marc,

    Citation Envoyé par Marc-L Voir le message
    [INDENT=2]Salut Pierre !

    Oui mais j'ai bien indiqué l'ouverture du classeur …[...]
    Arf. A la relecture, je vois que je n'avais pas compris "ouverture et fermeture du classeur..." comme tu l'exprimais. Au temps pour moi, donc.

    Sur le fond, je suis d'accord, mais quand on n'y connaît pas trop en VBA, on fait vite des c***, même sur trois lignes de code. Tu me diras que MSQuery n'est pas forcément plus simple d'abord si on n'a pas un minimum de connaissances en base de données... et tu n'auras pas tort...

    Ce qui est bien, c'est qu'il y a plusieurs pistes, amenant toutes au résultat escompté à moindres frais, pour peu que l'on accepte de revoir les limitations "imposées" (style travailler à classeur fermé)

    Bonne journée
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Sur le fond, je suis d'accord, mais quand on n'y connaît pas trop en VBA
    Justement selon la règle, Penser Excel avant VBA, un filtre avancé étant une fonctionnalité interne d'Excel
    donc déjà réalisable sans code …  Et si besoin d'automatiser, ici c'est le cas le plus simple car sans critère,
    la copie s'effectuant en une unique instruction, à la portée d'un débutant.
    Je l'ai fait faire à des collégiens (? ou fin de primaire et pas des génies, plutôt des footeux !)
    découvrant Excel - carotte avant d'accéder à une activité bien plus ludique - et avec des conditions :
    ils s'en sont sortis sans souci et assez rapidement …

    Et puis ce filtre avancé m'a bien dépanné avec des CEDGPHQLS (*) bidouillant toujours leurs feuilles de calculs puis
    prenant un malin plaisir en déclenchant des réunions avec la hiérarchie se plaignant des codes ne fonctionnant
    toujours pas alors que le contexte n'était plus du tout le même, je livrais puis formais en insistant sur
    l'équivalence des titres des colonnes puis confirmais par mail pour trace écrite avec une pièce jointe
    et lors de la réunion suivante, j'y passais seulement 30 secondes pour déposer l'impression du mail
    tout en restant à disposition pour une éventuelle démonstration avec le classeur validé lors de ce mail
    car j'avais vraiment d'autres choses bien plus importantes sous le coude,
    ce genre de personnage y réfléchissait ensuite à plusieurs fois, cela les calmait plutôt !


    (*) CEDGPHQLS (ou encore en parlé CEDFOL ou c'est l'océan) :


        Croit Emettre Des Gaz Plus Haut Que Le Séant !

       Pour ne pas dire pète plus haut que son cul ! …


  11. #11
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Et, si la plage des cellules est connue d'avance, pourquoi pas avec un nom défini...

    Dans votre classeur actif :
    1. Insérer un nom défini :
      Excel < 2007
      • Menu : Insertion
      • Choix : Nom
      • Cliquer sur : Définir

      Excel >= 2007
      • Onglet : Formules
      • Cliquer sur : Définir un Nom

      Noms dans le classeur => saisir : plage
      Fait référence à => saisir : ='C:\DVP\Machin\[source.xls]Feuil1'!$A$1:$C$10000
      Cliquer sur Ajouter.
    2. Dans votre classeur actif, en A1 saisir la formule : =plage
    3. Valider.
    4. Etirer cette formule sur toute la plage de A1 à C10000...
    5. Copier/Collage spécial valeurs
    6. Réorganiser les colonnes


    Bien sur, tout ceci peut également se faire via VBA...

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour l'efficacité... Il y a plein de problèmes qui peuvent naître du fait de cette liaison par formules. En plus, cela ne permet pas d'importer les colonnes dans un ordre différent de celui d'origine.

    Perso, ce n'est pas ma tasse de thé, et je déconseille très fortement cette technique.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je valide tout à fait ta démarche, Marc
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2018
    Messages : 30
    Par défaut
    Bonjour à Tous !

    merci pour votre retour et votre réactivité !

    J'ai pu adapté une macro sans prendre en compte mon premier problème (copier sans ouvrir le fichier excel source) ... en remplaçant par des liens hypertexte ...
    Le soucis est que la macro s’exécute bien mais certaines lignes des feuilles sources ne se copie pas dans la feuilles synthèse car ces des liens ... et en remplaçant ces lignes en valeur ... tout fonctionne sauf que ce n'est pas mon objectif !

    Les liens hypertexte doivent toujours existés ... donc mon soucis est :

    comment rajouter cette information dans ma macro !

    Ci-joint exemple. Merci pour votre retour et votre aide
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2009, 19h21
  2. Réponses: 5
    Dernier message: 04/12/2008, 16h58
  3. Réponses: 4
    Dernier message: 24/10/2008, 18h37
  4. Réponses: 4
    Dernier message: 04/07/2008, 11h34
  5. Réponses: 1
    Dernier message: 22/06/2008, 23h47

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