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 :

[Débutant] Copie données variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    APPRENTI
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : APPRENTI
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Points : 13
    Points
    13
    Par défaut [Débutant] Copie données variable
    Bonjour,
    J'avais déjà fait un topic demandant de l'aide plus tôt,
    Mais mes besoins on légèrement changé, je dois effectuer une macro qui à partir d'un fichier, importe des données d'un autre fichier Excel pour le remplir, il créera autant de fichiers que de fournisseur différents, dans le fichier cible.
    Voila le fichier cible :

    Nom : 1573548744-fichier-cible.png
Affichages : 493
Taille : 76,3 Ko

    et le fichier qui importera les données. :

    Nom : 1573548749-fichierimport.png
Affichages : 297
Taille : 63,9 Ko

    et voici le code de ma macro qui bloque à l'étape de la copie, pour la création de différents fichiers en fonction des différents fournisseur ça marche, donc le balayage des ligne du tableau doit aussi fonctionner c'est vraiment lors de la copie que ça bloque.

    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
    Sub céation()
    Dim docc As String
    Dim Source As String
    Dim destination As String
    NomVariable2 = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B3").Value
    NomVariable = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B2").Value
    NomVariable1 = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B3").Value
    chemin = "C:\Users\A339620\Desktop\Macro plomb"
    debut = 11
    compt = 2
     
     
    For Each Cell In Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B2", "B900000")
        NomVariable1 = Cell.Value
        If NomVariable <> NomVariable1 Then
            docc = chemin & "\Fournisseur" & NomVariable & ".xls"
            ThisWorkbook.SaveAs chemin & "\Fournisseur" & NomVariable & ".xls"
     
     
            Source = "C:\Users\A339620\Desktop\Maccro Excel\Draft_declaration_impact_plomb.xlsm"
            destination = chemin & "\Fournisseur" & NomVariable & ".xls"
     
     
            NomVariable = NomVariable1
            debut = 11
        Else
            ThisWorkbook.SaveAs chemin & "\Fournisseur" & NomVariable & ".xls"
            ThisWorkbook.Sheets("Listes de références").Cell(debut, B).Value = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Cell(compt, 2).Value
            debut = debut + 1
            compt = compt + 1
     
        End If
    Next
     
     
    End Sub
    Mon code contient surement beaucoup de choses tiré par les cheveux, mais je débute sur le VBA, donc soyez indulgent, et si vous avez une solution, vous me sauvez la vie !!!

    Je précise que le problème apparaît à la ligne 29 et lorsque je mets cette ligne de code la copie passe, mais bon ce ne sont pas le données que je veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets("Listes de références").Range("B11:F14").Value = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B2:E6").Value

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

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    Bonjour,

    Je n'ai pas vraiment compris ce que vous essayez de faire, mais à la ligne 28, la variable 'B' n'est pas initialisée. Il faut sans doute simplement écrire '2' au lieu de 'B' (B=colonne 2):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ThisWorkbook.Sheets("Listes de références").Cell(debut, B).Value = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Cell(compt, 2).Value
    '--- remplacer B par 2, soit
    ThisWorkbook.Sheets("Listes de références").Cell(debut, 2).Value = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Cell(compt, 2).Value
    Maintenant, le code est effectivement à nettoyer !

    Bonne continuation.

  3. #3
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Une précédente discussion a été reportée sur ce sujet. Npn?
    Pour ce qui me concerne, quelle est la difficulté par rapport au code proposé.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  4. #4
    Membre à l'essai
    Homme Profil pro
    APPRENTI
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : APPRENTI
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    J'ai trouvé ma solution !
    Le code tourne proprement !

    bon je le laisse quand même on sait jamais si un jour y'en a un qui galère dans quelques années !
    Coucou membres de 2024

    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
    41
    42
    43
    44
    45
     
    Sub céation()
    Dim debut As Variant
    Dim compt As Variant
    Dim docc As String
    Dim Source As String
    Dim destination As String
    NomVariable2 = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B3").Value 'synthese plomb est le fichier ou je recup les datas
    NomVariable = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("A2").Value
    NomVariable1 = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B3").Value
    chemin = "C:\Users\A339620\Desktop\Macro plomb"  'mon chemin du dossier ou son mes fichiers
    debut = 0
    compt = 0
     
     
     
     
    ' -------------------------------------------------------------------------------------------------------------------
     
     
     
    For Each Cell In Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B2", "B90000")
        NomVariable1 = Cell.Value
        If NomVariable = NomVariable1 Then
            ThisWorkbook.Sheets("Listes de références").Range("B11:F11").Offset(debut, 0).Value = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("F2:J2").Offset(compt, 0).Value
           debut = debut + 1
            compt = compt + 1
     
        Else
     
     
     
             ThisWorkbook.SaveAs chemin & "\Fournisseur" & NomVariable & ".xls"
             ThisWorkbook.Sheets("Listes de références").Range("B11:F90000").ClearContents
             ThisWorkbook.Sheets("Listes de références").Range("I6:I6").Value = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("E2:E2").Offset(compt, 0).Value
            ThisWorkbook.Sheets("Listes de références").Range("I7:I7").Value = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("B2:B2").Offset(compt, 0).Value
              ThisWorkbook.Sheets("Listes de références").Range("G6:G6").Value = Format(Now, "dd.m.yyyy")
             ThisWorkbook.Sheets("Listes de références").Range("B11:F11").Offset(0, 0).Value = Workbooks("Synthese_Plomb.xlsm").Sheets("Potentiels Plomb").Range("F2:J2").Offset(compt, 0).Value
            NomVariable = NomVariable1
            debut = 1
            compt = compt + 1
     
        End If
    Next
    End Sub

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

Discussions similaires

  1. [XL-2010] Copie de données variable
    Par Kris41 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2018, 22h43
  2. [Débutant] Tracé graphe série de données variable VBA
    Par michelmich dans le forum Général VBA
    Réponses: 1
    Dernier message: 06/06/2016, 08h46
  3. [Débutant] Copie de données et performance
    Par ariesnojf dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 09/04/2008, 16h39
  4. Réponses: 5
    Dernier message: 28/04/2004, 16h06
  5. [JSP][débutant] recupérer des variables...
    Par yass dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/04/2004, 11h05

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