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 :

VBA ouvrir fichier excel pour copier dans autre fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par défaut VBA ouvrir fichier excel pour copier dans autre fichier
    Bonjour à tous,

    Je veux réaliser un fichier qui regroupe 3 autres fichiers excel (des suivit d'activité contenant plusieurs feuilles formalisées de la même manière) et ce de manière à ce que l'utilisateur n'ai qu'a choisir les 3 fichiers à importer.

    J'ai donc bien commencé (j'ai fait un formulaire afin de faire selectionner à l'utilisateur les fichiers à importer et récupérer leurs "adresses")
    mais je bloque au moment ou je doit aller copier les données des 3 fichiers pour les coller dans la feuil1 de "prévisionnel".

    Je mets le code que j'ai commencé à faire pour mon fichier "prévisionnel" et j'envoie ce meme fichier ainsi que deux suivi d'activité




    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
    46
    47
    48
    49
    50
    51
    52
    Dim ligne_debut As Integer: Dim colonne_début As Integer
    Dim ligne_fin As Integer: Dim colonne_fin As Integer
    Dim ligne_encours As Integer: Dim colonne_encours As Integer
     
     
     
    Private Sub importer_Click()
    Dim fichier_choisi As String
    fichier_choisi = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")
      If (LCase(fichier_choisi) <> "faux" And fichier_choisi <> "0") Then
        liste_fichiers.AddItem (fichier_choisi)
      End If
     
     
    End Sub
     
    Private Sub sortie_Click()
     
    End Sub
     
    Private Sub traiter_Click()
     
    Dim nom_fichier As String
     
    ligne_debut = 2: colonne_debut = 1
    ligne_encours = ligne_debut: ligne_encours = ligne_fin
    Cells.Clear
    colle_données
    For i = 0 To liste_fichiers.ListCount
    copiecolle (liste_fichiers.List(i))
    Next i
     
     
     
    End Sub
    Private Sub fermer_Click()
     
    End Sub
     
     
     
    End Sub
     
    Private Sub copiecolle(fichier As String)
    Dim debut As Integer: Dim position As Integer: text As Variant
     
    Open fichier For Input As #1
     
    Close #1
     
     
    End Sub
    Je vous remercie de votre aide

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, peut-être en t'inspirant de Fusion de fichiers Excel XLS (2), à toi de voir. Un mode d'emploi sommaire se trouve ici, même si je n'ai reçu à ce jour aucune réponse de la part de TheMWette.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par défaut
    Bonjour et merci de ta réponse !!
    J'avoue que c'est pas facile de comprendre un codage VBA quand on n'y connais presque rien(comme moi)

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par défaut
    J'ai fait ce code pour le copier coller mais il m'indique une erreur "sub ou function non défini" en surlignant en jaune la 1ere ligne (déclaration du sub).


    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
    Private Sub copiecolle(fichier As String)
    Dim debut As Integer: Dim position As Integer: Dim text As Variant: Dim nomfichier As Variant: Dim lign As Integer: Dim colon As Integer: Dim x As Integer: Dim y As Integer
    Dim sh As Worksheet
     
     
    'ouvrir le premier fichier pour pouvoir copier coller ses données'
     
    Worbook.Open fichier
    nomfichier = Dir(fichier)
     
    'Pour chaque feuille du fichier à copier, trouver le nombre de lignes  et jusqu'à ce que la colonne 1 contienne un vide'
       Dim count As Long: Dim cel As Range
    For Each sh In nomfichier
        count = 0
                For Each cel In Columns(1)
                     If cel.Value <> "" Then
                     count = count + 1
                     End If
                  Next cel
                MsgBox count
                   'comme la 2eme ligne de chaque feuille est une ligne d'entete en 2eme ligne qui ne m'interesse pas, je dois enlever 1 au compteur'
               count = count - 1
                MsgBox count
         'Pour chaque fichier de la liste, pour chaque feuilles de ce fichier, pour chaque ligne à partir de la ligne 3, je viens copier la ligne et la coller dans la feuil1 du fichier prévisionnel '
          For y = 3 To count
          Workbook(prévisionnel).Worksheet("Feuil1").Row.Value = Workbook(nomfichier).Worksheet("sh").Row(ligne_encours).Value
          ligne_encours = ligne_encours + 1  'j'incrémente ligne_encours afin que dans mon fichier prévisionnel, la copie continue à ce faire dans la colonne d'en dessous '
          Next
     
    Next
     
     
     
    End Sub
    je re colle mon fichier "prévisionnel" que j'ai avancé depuis hier

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re, après qqs modifs ( format xlsb ) de l'appli Fusion et élagage de l'entête des mois de Mai 2018 sur tes exemples j'obtiens ceci :
    Images attachées Images attachées  

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par défaut
    Moi j'en suis à la avec une erreur sur For Each sh In cl

    mais oui si tu arrives à avoir la même en regroupant toutes les feuilles des 2 fichiers c'est tout à fait ce que je veut obtenir ^^ Et toi ça te prend 5 minutes hahaha

  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.

    Il est toujours utile de préciser la version d'Excel utilisée.

    A partir de XL2010, il est possible de fusionner des fichiers sans VBA avec PowerQuery. Ce pourrait être une alternative intéressante.

    Si tu veux y aller en VBA, je ne saurais trop te conseiller de découper ton code en (toutes petites) fonctions qui n'ont qu'une responsabilité. Ce sera plus facile à comprendre, à tester et à adapter (une fonction qui ouvre le fichier et te le met à disposition, une fonction appelée au sein d'une boucle et dont la responsabilité est de copier la feuille, ...).
    "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...
    ---------------

Discussions similaires

  1. [XL-2007] importation mise en forme des cellules d'un fichier excel fermé vers un autre fichier excel
    Par hamzadarraz dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/03/2017, 12h02
  2. Réponses: 3
    Dernier message: 28/02/2017, 13h15
  3. Date la plus ancienne dans un fichier excel pour insertion dans un tableau PHP
    Par Breton2408 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 27/06/2015, 20h52
  4. [XL-2010] copier depuis des fichiers excel identiques vers un seul fichier excel sous vba
    Par fleur-d'orient dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2015, 17h29
  5. Réponses: 2
    Dernier message: 14/02/2011, 19h30

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