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 :

Import données feuille 1 d'un classeur fermé via FileDialog [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 313
    Billets dans le blog
    15
    Par défaut Import données feuille 1 d'un classeur fermé via FileDialog
    Bonjour,

    Je souhaiterais compléter corriger ce script afin de coller les données importées sur ma feuille GL à partir de la cellule A2. Ici, je j'ai sélectionné la feuille entière de la source, sûrement le souci est à ce niveau, car Excel m'impose de coller à partir de la cellule A1.

    Merci pour votre aide

    Code vba : 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
    Sub ImporterGL()
     
       Dim FichierImport As String, ClasseurOrigine As Workbook, GL As String
       'sélection du fichier
       With Application.FileDialog(msoFileDialogFilePicker)
          .InitialFileName = ThisWorkbook.Path
          .Title = "Sélectionner le fichier à importer"
          .Filters.Add "Excel Files", "*.xlsx; *.xls, 1"
          If .Show = -1 Then
             FichierImport = .SelectedItems.Item(1)
             End If
       ' Collage des données sur la feuille GL à partir de la cellule A2
           Set ClasseurOrigine = Workbooks.Open(FichierImport)
                With ClasseurOrigine
                    Sheets(1).Select 'Onglet activé
                    Cells.Select 'Feuille entièrement sélectionnée
                    Selection.Copy
     
                    ThisWorkbook.Activate '
                    ActiveSheet.Select 'Onglet activé, ici la feuille GL
                    Range("A1").Select
                    Selection.PasteSpecial Paste:=xlAll 'Collage
                ClasseurOrigine.Activate 'Fichier sélectionné activé
                Application.CutCopyMode = False
                ActiveWindow.Close SaveChanges:=False 'Fermeture du fichier sélectionné 
     
                End With
     
       End With
     
     
    End Sub
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 313
    Billets dans le blog
    15
    Par défaut
    Finalement j'arrive à peu près à ce que je veux avec ceci :

    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
    Option Explicit
     
    Sub ImporterGL()
     
       Dim FichierImport As String, ClasseurOrigine As Workbook, GL As String
       'sélection du fichier
       With Application.FileDialog(msoFileDialogFilePicker)
          .InitialFileName = ThisWorkbook.Path
          .Title = "Sélectionner le fichier à importer"
          .Filters.Add "Excel Files", "*.xlsx; *.xls, 1"
          If .Show = -1 Then
             FichierImport = .SelectedItems.Item(1)
             End If
       ' Collage des données sur la feuille GL à partir de la cellule A2
           Set ClasseurOrigine = Workbooks.Open(FichierImport)
                With ClasseurOrigine
                    Sheets(1).Select 'Onglet activé
                    Range("A:I").Select 'Sélection des colonnes à copier
                    Selection.Copy
     
                    ThisWorkbook.Activate '
                    ActiveSheet.Select 'Onglet activé, ici la feuille GL
                    Range("A:I").Select
                    Selection.PasteSpecial Paste:=xlPasteValues 'Collage
                ClasseurOrigine.Activate 'Fichier sélectionné activé
                Application.CutCopyMode = False
                ActiveWindow.Close SaveChanges:=False 'Fichier sélectionné fermé
     
                End With
     
       End With
     
    End Sub
    Sauf que avec cette ligne, le collage ne commence pas par A2 (ce que je cherche à faire) :

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A:I").Select
         Selection.PasteSpecial Paste:=xlPasteValues 'Collage


    Merci d'avance pour votre aide
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 313
    Billets dans le blog
    15
    Par défaut
    Et voilà, avec les tableaux structurés, mon problème est réglé.

    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 ImporterGL()
     
       Dim FichierImport As String, ClasseurOrigine As Workbook, GL As String
       'sélection du fichier
       With Application.FileDialog(msoFileDialogFilePicker)
          .InitialFileName = ThisWorkbook.Path
          .Title = "Sélectionner le fichier à importer"
          .Filters.Add "Excel Files", "*.xlsx; *.xls, 1"
          If .Show = -1 Then
             FichierImport = .SelectedItems.Item(1)
             End If
       ' Collage des données sur la feuille GL à partir de la cellule A2
           Set ClasseurOrigine = Workbooks.Open(FichierImport)
                With ClasseurOrigine
                    Sheets(1).Select 'Onglet activé
                    ' Tableau1 : transformation du GL importé en Tableau Structuré
                    ActiveSheet.ListObjects("Tableau1").DataBodyRange.Select 'Sélection du contenu du Tableau1
                    Selection.Copy ' Copie du contenu du Tableau1
     
                    ThisWorkbook.Activate
                    ActiveSheet.Select 'Onglet activé, ici la feuille GL ou se situe le bouton d'importation des données du Tableau1
                    ActiveSheet.ListObjects("Tableau_GL").DataBodyRange.Select  ' Tableau_GL se trouve sur la feuille GL. C'est le tableau structuré de lequel seront collées les données copiées
                    Selection.PasteSpecial Paste:=xlPasteValues 'Collage
                ClasseurOrigine.Activate 'Fichier sélectionné activé
                Application.CutCopyMode = False
                ActiveWindow.Close SaveChanges:=False 'Fichier sélectionné fermé
     
                End With
     
       End With
     
     
    End Sub
    Merci à ceux qui liront.

    Je suis preneur pour une version plus propre
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 25
    Par défaut
    Bonjour Malik,

    tu peux alléger ton code notamment en déclarant tes Tableaux structurés. Ils appartiennent à ton fichier, et pas seulement à une feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim t_source as listobject
    set t_source = range("Tableau1").listobject
     
    dim t_GL as listobject
    set t_GL = range("Tableau_GL").listobject
    Ce qui te permet ensuite de les manipuler plus simplement.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    t_source.databodyrange.copy 'je copie l'intégralité du tableau source
    t_GL.databodyrange.listrows.add PasteSpecial Paste:=xlPasteValues 'copie du tableau source à la ligne suivante du tableau_GL

  5. #5
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 313
    Billets dans le blog
    15
    Par défaut
    Salut benoitdevries,

    Merci pour ton retour

    Je regarde cela et l'intègre.

    Bonne journée
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/11/2015, 17h30
  2. [Toutes versions] Récupérer feuille entière d'un classeur fermé (ADO ?)
    Par SylvainM dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/09/2015, 11h13
  3. [XL-2010] ouverture et copie de donnée dans un classeur fermée via connection
    Par bernadin.m dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/01/2014, 11h43
  4. Macro pour copier feuille voulu d'un classeur fermé sur classeur ouvert
    Par Nicojez dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/06/2012, 15h46
  5. Réponses: 6
    Dernier message: 03/09/2009, 18h23

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