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 :

Importer des données d'une feuille précise grâce à une Macro


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
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Par défaut Importer des données d'une feuille précise grâce à une Macro
    Bonjour à tous,

    Voila, je suis en train de réaliser un dossier me permettant de récupérer et mettre à jour des informations provenant d'une base de données. J'essaye donc d'écrire une macro pour sélectionner une feuille en fonction de la valeur d'une cellule qui comporte une liste déroulante.

    Voici ce que j'ai écris pour l'instant en m'aidant d'internet, j'avoue ne pas être un mec ultra callé concernant les macros.

    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
    Sub ImporteBDD()
    '
    ' ImporteBDD Macro
    '
     
    '
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "Données Globales" Then Sheets("Données Globales").Select
     
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "DIB" Then Sheets("DIB").Select
     
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "DIS" Then Sheets("DIS").Select
     
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "Cartons - Papiers" Then Sheets("Cartons - Papiers").Select
     
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "PF Défectueux" Then Sheets("PF Défectueux").Select
     
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "Verres" Then Sheets("Verres").Select
     
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "Emballages Souillés" Then Sheets("Emballages Souillés").Select
     
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "Plastiques" Then Sheets("Plastiques").Select
     
        If Sheets("Mise à jour de la BDD").Range("B19").Value = "Déchets Bois" Then Sheets("Déchets Bois").Select
     
        End If
     
        ActiveCell.Offset(-17, -11).Range("A1:M15").Select
        Selection.Copy
        Sheets("Mise à jour de la BDD").Select
        ActiveCell.Offset(-29, -6).Range("A1:M15").Select
        ActiveSheet.Paste
        ActiveCell.Offset(17, 1).Range("A1:C1").Select
    End Sub
    Est-ce que vous pourriez m'aider et me permettre de compléter macro ou l'améliorer pour quelles fonctionne

    Merci beaucoup.

    Jean-Romain

  2. #2
    Membre éclairé
    Homme Profil pro
    Chargé d'affaires commerciales
    Inscrit en
    Janvier 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaires commerciales
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2018
    Messages : 62
    Par défaut
    Bonjour,

    Dans un premier temps, je te conseille fortement d'utiliser les balises de code pour apporter de la visibilité à ta question ^^

    Tu pourras déjà te simplifier la vie en supprimant tous tes "IF" en utilisant un Select Case, cette structure est parfaitement adaptée à l'utilisation de ta macro.

    Cela donnerai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub ImporteBDD()
     
    Dim Val_cellule as String
     
    Val_cellule = Sheets("Mise à jour de la BDD").Range("B19").Value
    Select  Val_cellule
      case "Données Globales"
        Sheets("Données Globales").Select
      case "DIB"
        Sheets("DIB").Select
    ...
    End Select
    Pour la suite, je n'arrive pas à comprendre ce que tu as souhaité faire, pourrais tu nous donner plus d'informations et de détails sur l'utilité de la macro ?

    Cdt
    Matt

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Par défaut
    Merci de ta réponse très rapide.

    En faite, j'ai besoin de créer un fichier qui reprends la production de déchets pour mon usine. Dans ce fichier j'ai plusieurs catégories de déchets que je pèse actuellement. J'aimerais rendre mon tableau plus simple à compléter, car il présente beaucoup d'onglets qu'il faut aller remplir à la "mains" un par un en navigant entre eux.

    Je pensais donc pouvoir rédiger une macro qui me permettais d'aller chercher les informations (typiquement ma production de déchets) dans mes onglets, compléter les informations puis enfin les réenregistrer dans mon onglets et le tous depuis la même feuille de calcul excel.

    Est-ce que ma demande est plus claire ? Ou tu trouve cela encore plus compliqué ?

    Merci d'avance

    Jean-Romain

  4. #4
    Membre éclairé
    Homme Profil pro
    Chargé d'affaires commerciales
    Inscrit en
    Janvier 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaires commerciales
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2018
    Messages : 62
    Par défaut
    Ta demande est beaucoup plus claire mais peu détaillée ...

    Il nous faudrait ta structure de chaque feuille pour pouvoir savoir comment les modifier.

    Il faut que tu définisses si tu souhaites réaliser ces actions à partir de formulaires ou à partir de simples cellules, etc etc

    En gros, j'ai compris la finalité de ton projet mais les moyens que tu souhaites mettre en oeuvre pour y arriver sont encore un peu flous :p

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Par défaut
    Bonjour

    Et en remplaçant le case select par ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim Val_cellule As String
     
    Val_cellule = Sheets("Mise à jour de la BDD").Range("B19").Value
    Sheets(Val_cellule).Select
    ....

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Par défaut
    Héhé ! Bien alors je vais essayer d'être un peu plus précis

    Alors mon classeur est composé d'une feuille principale, qui liste les différents service de mon usine sur un plan et pour chacun de ces service une liste des déchets qu'ils produisent. Cette liste est composés de forme avec à l'intérieur le nom des déchets, j'ai affecté une macro à ces différentes forme qui me permette de renvoyer vers un graphique et plusieurs informations complémentaire sur le déchets en questions.

    J'ai ensuite une feuille par types de déchets (celles ou l'on atterrie grâce à la macro dont je viens de vous parler). Ces feuilles ont tous la même architecture, il y a un tableau récapitulant à l'années la production du déchets sur le site. ce tableau est caché par un graphique qui permets de très vite s'apercevoir qui produit le plus de déchets. En dessous on retrouvera des informations utile concernant le déchets (moyens de collecte etc ...)

    Dans une dernière feuille un tableau, qui me permettrais de mettre à jours mes autres feuilles. Est-ce que tu as d'autre questions ? En gros, il y a plusieurs utilisateurs ; ceux qui consulte, et qui n'ont pas besoin de retrouver le tableau sous le graphique puisque cette informations leurs est envoyé automatiquement par un autre moyens. Et il y a moi et d'autres personnes qui doivent pouvoir mettre à jour les différents tableau mais aussi avoir une vision précise de la quantités de déchets.

    Est-ce que ma demande est plus claire ? Ou tu as d'autres question ?

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par JRIFIF Voir le message
    Alors mon classeur est composé d'une feuille principale
    Quelle est son nom ?

    Cette liste est composés de forme avec à l'intérieur le nom des déchets,
    Mauvaise idée.
    Il est compliqué de retrouver quelle forme correspond à une ligne donnée alors que c'est beaucoup plus simple si la donnée est dans une ligne.

    j'ai affecté une macro à ces différentes forme qui me permette de renvoyer vers un graphique et plusieurs informations complémentaire sur le déchets en questions.
    Si les données étaient dans des cellules, ça pourrait se faire avec de simples liens hypertexte sans VBA.

    J'ai ensuite une feuille par types de déchets (celles ou l'on atterrie grâce à la macro dont je viens de vous parler).
    J'espère que ton Sheets("Mise à jour de la BDD").Range("B19").Value n'est pas une tentative pour accéder à la données de la forme.
    Si c'est le cas, ça ne marchera pas comme ça.

    Dans une dernière feuille
    Quel est son nom ?

    un tableau, qui me permettrais de mettre à jours mes autres feuilles.
    Quelles sont ses coordonnées ?

    Est-ce que tu as d'autre questions ?
    A moins que tes onglets s'appellent "une feuille principale" et "une dernière feuille", et que tu ais nommé des cellules "une liste" ou "un tableau", je doute que les données que tu as fournies soient exploitables pour écrire un code...

    Est-ce que ma demande est plus claire ?
    Par vraiment.
    Je viens de lire trois fois ton explication et nulle part tu n'indiques ce que doit faire cette macro.

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu peux remplacer toute ta batterie de If par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Worksheets(Worksheets("Mise à jour de la BDD").Range("B19").Value).Select
    Par contre, je ne comprends pas la suite.
    Faire référence avec une ActiveCell d'une feuille qu'on vient de sélectionner ressemble un peu à jouer à la roulette russe.
    Donc, pour pouvoir t'aider, il faudrait que tu sois plus précis sur la position des données sources et des données destination.

    Passer par des Offset est rarement une bonne solution pour accéder à une adresse précise.
    Je pense que la lecture de ceci serait très instructif pour toi : https://msdn.microsoft.com/fr-fr/VBA...e-object-excel

  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.

    Pour moi, c'est d'abord un problème de conception. Il serait plus intéressant que les données soient dans la même feuille, quel que soit le type de déchet. C'est le principe même d'une base de données.

    En pratiquant ainsi, tu te donnes la possibilité d'utiliser les outils d'Excel pour l'analyse (tcd, filtres automatiques ou élaborés, fonctions d'ensemble, ...). Si tu es seul à saisir les données, tu peux les saisir directement dans la "table de données" Excel. Si tu les fais saisir, tu peux préparer un "formulaire" de saisie dans une autre feuille et prévoir un bouton pour transférer la saisie dans la table de données.

    La récupération de données peut s'effectuer soit par filtre avancé, soit par macro, soit par un mix des deux. L'analyse est également rendue possible en suivant cette conception.
    "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
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Par défaut
    Je ne serais pas le seul à compléter les données.

    Par contre, je ne sais pas du tout utiliser de formulaire, donc cela me paraît compliqué.
    Néanmoins, ton idée de placer tous les informations dans la même feuille de calculs me paraît intéressent, mais, je ne sais pas trop comment faire pour réaliser un formulaire qui me dirais de copier dans un tableau plutôt que dans un autre. Le but de faire une seule feuilles qui remplie plusieurs tableau c'est aussi de simplifier le renseignement des données, et d'éviter que l'on ce trompe de déchets trop facilement, les données sont complétement différentes d'un déchets à l'autre.

  11. #11
    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
    "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...
    ---------------

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Par défaut
    Par contre,

    Il n'y a aucun intérêts à comparer les types de déchets entre eux, puisque par exemple on produits énormément de déchets cartons mais très peu de piles par exemple, donc pas besoin de les comparer entre eux. Bien sur que réduire le nombre de déchets cartons fera diminuer le nombre de déchets globaux plus que de diminuer la production de piles usagers, mais j'ai pas forcement besoin d'un fichier excel pour connaître ce genre d'info. Mon fichier, c'est plus une image de la production de tels types de déchets en fonction du service et donc un classement des services en fonction de leurs quantités de déchets produits, pour identifier les dérive. Si dans mes 6 stockages j'en es un qui produit 6 fois plus de déchets, je sais ou concentrer mes efforts en gros.

    Donc Est-ce vraiment intéressent de mettre touts mes tableau sur le même fichier, je ne suis plus si sûr finalement. Je suis perdu

  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 pense, personnellement, que la conception du fichier n'est pas liée à ce que tu fais de tes données.

    Si les caractéristiques des types de déchets sont très différentes l'une de l'autre, peut-être Est-ce plus intéressant de les séparer dans des feuilles spécifiques, mais comme tu souhaites, si j'ai bien compris, une feuille de saisie pour dispatcher tes saisies dans différents onglets, j'ai supposé que la structure d'une donnée de déchet était la même quel que soit le type.

    Je reste pour ma part persuadé qu'il est de loin préférable de bien séparer les données, leur saisie, leur présentation et leur analyse sur différentes feuilles et d'articuler ton code vba sur base de ce découpage.

    Je te conseille en tout cas de bien réfléchir à cela avant de te lancer dans la production de code.
    "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
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Par défaut
    Effectivement, mes données, leurs présentation et leurs analyses sont bien séparés. Chacun à sa propre feuille, je voulais simplement, comme j'ai pas mal de feuille, regrouper la saisie dans une même feuille, pour me simplifier la tâche. Mais surtout pour simplifier la saisie des données par d'autres personnes qui ne savent pas forcément ou trouver tous mes onglets, j'ai juste une page principale qui me permets de naviguer entre ces différents onglets.

    J'estime qu'avec les infos que j'ai déjà je suis capable de faire un bon truc, maintenant je suis preneur de toutes idées pour améliorer ce fichier sur son organisation, sa forme ou que sais-je. Puisque je vais devoir le présenter devant la direction dès que j'estime être prêts

Discussions similaires

  1. [XL-2007] Importer les données d'un fichier .csv vers une feuille XL
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/04/2013, 09h10
  2. Importer des données d'un fichier PDF dans une feuille Excel
    Par pourinfo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2010, 14h58
  3. Réponses: 4
    Dernier message: 08/01/2009, 15h01
  4. Importer des données de 250 feuilles vers une seule
    Par Bryan78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/04/2008, 16h18
  5. Réponses: 3
    Dernier message: 13/12/2004, 13h54

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