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 :

Besoin d'aide pour une macro - Copier les données feuille 1 dans feuille 2 avec le détail par ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut Besoin d'aide pour une macro - Copier les données feuille 1 dans feuille 2 avec le détail par ligne
    Bonjour à tous,

    A mon travail on m'a demandé d'effectuer une macro sur un classeur excel, travaillant plutôt du coté du web, c'est pas si simple pour moi donc j'ai commencé à apprendre le VBA mais je n'arrive pas à mettre en route ce que j'ai appris.

    Si quelqu'un pouvais m'aider ça serais super gentil!!!


    Voila l'énoncé
    :
    J'ai 1 classeur composé de deux feuilles 'data' et 'result'
    Dans La feuille data j'importe une tableau d'un autre classeur à la main, ça contient des lignes comprenant le nombre de piece de X référence à produire.
    Exemple d'une ligne dans la feuille data :
    quantité - référence - prix unité - aire en M2
    4 - JP1 - 12,45 - 0,78
    2 - X87 - 4,8 - 0,50
    Je voudrais que lorsque qu'on clique sur le bouton 'lancer la macro', la feuille 'result' se remplisse avec X fois le nombre de lignes par quantité de pieces
    Exemple en lien avec l'exemple présenté ci dessus:
    1 - JP1 - 12,45 - 078
    1 - JP1 - 12,45 - 078
    1 - JP1 - 12,45 - 078
    1 - JP1 - 12,45 - 078
    1 - X87 - 4,8 - 0,50
    1 - X87 - 4,8 - 0,50

    Vous avez compris?

    En gros on 'decompresse' la feuille data pour en afficher le detail (c'est pour ensuite aller dans un CSV pour un programme)

    Voici mon raisonnement pour le code (je pense)
    -> lire la 1ere ligne -> incrémenter tout ça dans un tableau 2D
    -> lire la 2eme ligne -> ajouter a la suite dans un tableau 2D
    [...]
    -> coller le tableau 2D sur la nouvelle feuille

    Ca vous semble possible ? Votre avis ?


    Merci d'avance

    ps: désolé pour le titre du sujet je ne savait vraiment pas quoi mettre :s

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la logique de passer par un tableau est pas mauvaise en soi.
    quel est ton niveau de connaissance dans la manipulation des tableaux ? Car tu n'as montré aucune ligne de code tentée.


    pour apporter de l'eau à ton moulin, au lieu de redimensionner à la volée ton tableau, tu peux simplement calculer sa taille finale dès le début de la procédure via une somme de ta colonne des quantités

    ensuite, soit tu travailles sur la plage excel, soit tu utilises un second tableau qui stocke les lignes brutes

    une boucle sur chaque ligne, et une sous-boucle pour peupler ton tableau final (plus précisément "injecter X fois la ligne du tableau brut" via application.index) en fonction de la quantité référencée sur la ligne testée


    un bon appui pour débuter les tableaux : http://silkyroad.developpez.com/vba/tableaux/

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut
    Bonjour,

    merci t'avoir pris le temps de lire mon post
    Je suis un peu dans la galère avec le VBA, la logique est tellement différent de ce que j'ai l'habitude de faire...

    J'ai commencé le code suivant mais j'ai une grosse belle erreur de 'Constante requise' à chaque tentative de compilation..
    C'est dommage ça partait bien (je crois)

    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
    Sub ma_macro()
     
     
    'ETAPE 1 -> Calculer la taille definitive du tableau 2D
     
        ' ici, j'ai fait un SUM() de la colonne A, dans la cellule G2, je récupère donc ma taille de tableau comme ceci
        ma_variable = ActiveSheet.Range("G2").Value
        MsgBox ma_variable
     
     
    'ETAPE 2 -> Création du tableau
        Dim tabtest(ma_variable) As String
        Dim i As Integer
     
    'Verification
     
        For i = 0 To ma_variable
            MsgBox tabtest(i)
        Next i
     
     
     
    End Sub

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Quand tu déclares ta variable tableau, soit tu n'indiques pas immédiatement la taille et il est dynamique, soit tu indiques une constante (un chiffre) pour tailler au poil ton tableau.
    Mais pas une variable

    En revanche, quand redimensionnes ton tableau, tu peux utiliser une variable numérique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Base 1
    Sub Test()
    Dim Taille As Integer, toto()
        Taille = 10
        ReDim toto(Taille)
    End Sub
    Je crois que pour mettre en place une solution propre, il faut au moins comprendre les principes généraux du tutoriel que je t'ai fournis.
    Sinon, par manque de temps ou d'envie, il faut prévoir des solutions moins complexes, à base de copier/coller des plages. Ca sera plus long mais beaucoup plus simple quand on débute

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut
    J'ai bien compris le sens de tes messages qui, en gros me disent, 'au lieu de faire ça, commence par apprendre' mais justement apprendre c'est en faisant, on commence tous par faire un peu n'importe et alors s'offrent à nous quelques solutions, demander de l'aide ou alors réussir à tout capter tout seul. Hélas, pour le coup j'avais besoin un peu d'éclaircissement voir de quelqu'un qui pouvais éventuellement faire un exemple en expliquant juste quelques étapes afin de le digérer, de le comprendre, recoder totalement et de l'améliorer.

    L'envie d'apprendre est carrément la mais le temps par-contre non, je dois aider sortir une macro la dessus pour les besoin de mon boulot ce qui me limite dans le temps et aussi sur la mise en place.. tu me comprend si je te dit que je vais avoir du mal à dire à mes utilisateurs "désolé, je suis trop noob, quelqu'un m'a dit que dans ce cas, c'est mieux de faire un copier coller les amis, bonne chance!"

    Je vais donc me tourner vers d'autres solutions qui me feront un peu plus progresser et me renseignerons un peu plus c'est certain

    Dans tout les cas merci pour tes explications sur le fait que je dois apprendre (je n'y serais pas arrivé tout seul à comprend ça )

    A mettre en résolu

    @+ et bonne soirée, et bonne chance aux autres

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Le sens de la fin de mon message allait justement sur cette hypothèse où tu n'as pas le temps d'approfondir la mécanique d'un outil sommes-toutes assez complexe à vouloir correctement maîtriser quand on débute ... j'ai mis au moins 4 mois à en saisir toutes les subtilités moi.

    D'où la proposition d'aller à du plus concret rapidement.

    L'exemple le plus simple, c'est d'utiliser l'enregistreur de macro pour te pré mâcher un code
    Tu peux capturer les actions suivantes :

    - copier une ligne dans une feuille
    - aller dans une autre feuille
    - insérer une ligne
    - coller le résultat


    C'est le moteur, appliqué à un cas arrêté.
    Il reste ensuite à faire deux petites boucles assez simple à trouver : pour réaliser les multi-coller en fonction de la quantité + pour balayer chaque ligne de ta feuille source.

    En moins d'1h t'as bouclé ton projet avec une procédure, certes qui ne va pas égaler les performances d'un tableau vba, mais parfois il vaut mieux perdre une seconde et maîtriser/savoir bricoler son bolide


    et si vraiment tu veux rester sur les tableaux, va au moins voir ce sujet daté d'il y a quelques heures, histoire de voir si tu trouves rien de valable pour faire avancer ton projet et le sujet de ta discussion
    https://www.developpez.net/forums/d1...itue-tableaux/

Discussions similaires

  1. [XL-2010] Besoin d'aide pour une macro de recherche de doublon
    Par Thierry_59300 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 09/06/2016, 07h48
  2. besoin d'aide pour une macro
    Par isodoro dans le forum Excel
    Réponses: 13
    Dernier message: 11/06/2015, 10h10
  3. Besoin d'aide pour une macro
    Par chapeyfor dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/12/2013, 17h29
  4. besoin d'aide pour une macro
    Par STEFLOU dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/04/2012, 13h31
  5. Besoin d'aide pour une macro en visual basic
    Par raikkonen3 dans le forum VB.NET
    Réponses: 3
    Dernier message: 11/10/2008, 18h57

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