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 coller donnees depuis fichier source avec condition [Toutes versions]


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
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2022
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2022
    Messages : 16
    Par défaut Copier coller donnees depuis fichier source avec condition
    Bonjour,

    Je fais face a une difficulte sur ma macro.
    L'objectif de cette macro est de generer des fiches excels avec des informations provenant du fichier source sur leauel la macro est codee [ fichier MM MASTER FILE]
    3 Fichiers sont envoyes;
    - 1: le fichier source [MM MASTER FILE]
    - 2: La template vierge de donnees MM MASTER FILE.xlsmWHP03-SPI1-ASYYY-28-200800-0001_rev04-A01.xlsxSPL-E_Template_Reference.xlsx
    - 3: un exemple de template remplie d'informations [pour le moment , les donnees sont rentrees manuellement]. Dans l'ideal, je souhaiterais que la marco remplisse ces informations

    Concernant le code, J'arrive a coder pour copier les donnees de la premiere ligne du tableau sur laquelle je souhaite generer et coller les infos sur le fichier genere.
    Cependant, j'ai une condition,
    Si la donnee en colonne B est similaire [TAG], alors la macro devrait etre capable de recuperer les informations de la ligne du fichier source et les coller en dessous de la premiere ligne codee
    Et c'est la que je bloque

    Je ne sais pas si cela etait clair
    J'qi mis en PJ les documents. Votre aide serait tres precieuse .

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Citation Envoyé par Maxime VANDEPLASSCHE Voir le message
    Je ne sais pas si cela etait clair
    Heu non.
    Est ce que tu peux reformuler ?

    Et (malheureusement), c'est codé à la truelle ton truc.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2022
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2022
    Messages : 16
    Par défaut
    Effectivement, c'est code a la truelle car je ne suis pas expert.

    Dans le MasterFile (Sheet Input], la macro genere une feuile excel avec les datas qui sont renseignes dans le master file [la premiere ligne [ligne 4]], la ou j'ai renseigne "1" en colonne A du master file.
    Sur la template generee, cela marche sur la sheet 1 [SPL-E_Sh.1] --> data copiees sur ligne 16 et sur la sheet 2 [SPL-E_Sh.2 _ Eqt-List] sur ligne 14
    Jusque la cela marche

    Cependant, si en colonne B, la data est identique en ligne suivante {ici B5], alors la macro devrait renseigner / copier les champs sur la ligne suivante du fichier genere --> data copiees sur ligne 17 et sur la sheet 2 [SPL-E_Sh.2 _ Eqt-List] sur ligne 15
    et ainsi de suite
    Et la se trouve ma difficulte. J' ai essaye avec une do while loop mais je n'y arrive pas

    Est ce plus clair?

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 441
    Par défaut
    Bonjour,

    Ceci devrait le faire:
    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
    34
    35
    36
    37
    38
    39
    40
    Option Explicit
     
    Sub Sheet_equipement_generation()
        Dim i As Long, z As Long
        Dim SourceFile As String, DestinationFile As String
        SourceFile = ThisWorkbook.Path & "\1-MM_TEMPLATE\SPL-E_Template_Reference.xlsx"
        i = 4
        Application.ScreenUpdating = False
        With ThisWorkbook.Worksheets("Input")
             While Not IsEmpty(.Cells(i, 1))
                If .Cells(i, 1).Value = "1" Then        'Only Generate Equipment with "1" in column A
                    DestinationFile = ThisWorkbook.Path & "\2-GENERATED_SPLE\" & Range("AD" & i) & ".xlsx"
                    FileCopy SourceFile, DestinationFile
                    Workbooks.Open DestinationFile
                    '==== remplir feuille n°1, partie titres
                    Sheets("SPL-E_Sh.1").Select                 '<--- select
                    Range("B7") = .Range("AG" & i) ' Main Function/Main Tag
                    Range("B9") = .Range("AQ" & i) ' Main Function/Main Tag Description
                    '... et ainsi de suite
                    z = 0
                    Do
                        '==== remplir feuille n°1, partie données
                        Sheets("SPL-E_Sh.1").Select                 '<--- select
                        Range("A16").Offset(z, 0) = .Range("O" & i)
                        Range("B16").Offset(z, 0) = .Range("P" & i)
                        '... et ainsi de suite
                        '==== remplir feuille n°2, partie données
                        Sheets("SPL-E_Sh.2 _ Eqt-List").Select
                        Range("U14").Offset(z, 0) = .Range("AF" & i) 'PO Number
                        Range("B14").Offset(z, 0) = .Range("AR" & i) 'Location
                        '... et ainsi de suite
                        i = i + 1
                        z = z + 1
                    Loop Until .Cells(i, 1) = 1 Or IsEmpty(.Cells(i, 1))
                    ActiveWorkbook.Close SaveChanges:=True
                End If
            Wend
        End With
        MsgBox (" SPLE Generated !")
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-365] comment faire un copier coller d'un fichier csv avec separation des ; au collage
    Par vikingkong dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/05/2020, 18h39
  2. [XL-2013] Copier coller valeur sur deux feuille avec conditions
    Par SirFurtif dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/05/2018, 17h53
  3. Réponses: 1
    Dernier message: 05/08/2015, 08h57
  4. [XL-2010] Copier coller données depuis plusieurs feuilles avec correspondance
    Par issmino dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2015, 15h50
  5. boucle avec copier coller dans un fichier excel
    Par Chalu_C_Momo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/11/2008, 17h45

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