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 :

Importer des données avec VBA [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut Importer des données avec VBA
    Bonjour,

    J'aimerais créer une macro qui permette à l’utilisateur de sélectionner un fichier Excel et copier les données du fichier sélectionné vers une feuille non vide du fichier dans lequel se trouve la macro. J'ai trouvé cette procédure sur le forum que j'ai un peu modifié et elle bug maintenant

    Pourriez vous m'aider svp ?

    Cordialement


    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
    Sub Importer_Donnees()
     
    'IMPORTATION D'UNE SEULE FEUILLE DE DONNEES
     
    Dim DestBook As Workbook, SourceBook As Workbook
    Dim DestSheet As Worksheet
    Dim RetVal As Boolean
     
    ' Turn off screen updating.
    Application.ScreenUpdating = False
     
    'chemin en relatif du dossier ou se trouve tes données
    ChDir ("C\")
    'ou en hard
    'Chemin = "C:\...\dossier"
     
    MonFichier = Application.GetOpenFilename(FileFilter:="Fichiers Excel (*.xl*), *.xl*")
    ' Set object variables for the active book and active cell.
    Set DestBook = ActiveWorkbook
    Set DestSheet = Sheets(1) 'active la cellule OU TU AIMERAIS COPIER LES DONNEES
     
    ' Show the Open dialog box.
    RetVal = Application.Dialogs(xlDialogOpen).Show(Chemin & "\*.*")
     
    ' If Retval is false (Open dialog canceled), exit the procedure.
    If RetVal = False Then Exit Sub
     
    ' Set an object variable for the workbook containing the text file.
    Set SourceBook = ActiveWorkbook
     
    ' Copy the contents of the entire sheet containing the text file.
    Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Copy
     
    'OU copie un range défini
    'Range("A1:AD2000").copy
     
    ' Activate the destination workbook and paste special the values
    ' from the text file.
    DestBook.Activate
    DestCell.PasteSpecial Paste:=xlValues
     
    ' Close the book containing the text file.
    SourceBook.Close False
     
    Application.ScreenUpdating = True
     
     
    End Sub

  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, une réponse peut-être ici en l'adaptant, si besoin est, à ton contexte.

    P.-S. : supprime ton post qui n'est pas dans le bon forum

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, une réponse peut-être ici en l'adaptant, si besoin est, à ton contexte.

    P.-S. : supprime ton post qui n'est pas dans le bon forum
    Bonjour,

    Merci pour votre aide.

    Je ne suis pas vraiment un expert en VBA.
    Pourriez vous juste me dire quelle erreur il y a sur mon code s'il vous plaît ? Parce que je me perds un peu dans le code que du fichier fusion.
    Aussi comment supprimer un post sur ce forum ?

    Cordialement

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    afin d'eviter les activate et autre tu pourrais te contenter d'une variable tableau
    principe :
    tu ouvre , tablo=ta plage desirée , tu ferme , destination=tablo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set SourceBook = ActiveWorkbook
    tablo = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Value
    SourceBook.Close False
    DestCell.Resize(UBound(tablo), 1) = tablo
    Application.ScreenUpdating = True
    remarque: quand tu ferme la source le classeur de destination reprend le focus

    et puis ca plant un peu a cause de ca aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Show the Open dialog box.
    RetVal = Application.Dialogs(xlDialogOpen).Show(Chemin & "\*.*")
    a aucun moment chemin est déterminé !!!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour,
    le souci n'est pas de copier du code trouver sur le forum mais de se l'approprier!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MonFichier = Application.GetOpenFilename(FileFilter:="Fichiers Excel (*.xl*), *.xl*")
    ' If Retval is false (Open dialog canceled), exit the procedure.
    If MonFichier = False Then Exit Sub
    ' Set an object variable for the workbook containing the text file.
    Set SourceBook = Workbooks.Open(MonFichier)

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    Bonjour
    afin d'eviter les activate et autre tu pourrais te contenter d'une variable tableau
    principe :
    tu ouvre , tablo=ta plage desirée , tu ferme , destination=tablo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set SourceBook = ActiveWorkbook
    tablo = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Value
    SourceBook.Close False
    DestCell.Resize(UBound(tablo), 1) = tablo
    Application.ScreenUpdating = True
    remarque: quand tu ferme la source le classeur de destination reprend le focus

    et puis ca plant un peu a cause de ca aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Show the Open dialog box.
    RetVal = Application.Dialogs(xlDialogOpen).Show(Chemin & "\*.*")
    a aucun moment chemin est déterminé !!!!!
    Bonjour,

    Merci pour votre réponse
    je ne comprends pas trop l'idée avec le tablo. Aussi, je ne connais pas forcément le nombre de cellules du fichier où récupérer les données.

    Cordialement

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Rebonjour,

    J'ai pu le corriger comme ça, toutefois à l'ouverture, il ne pointe pas directement sur le répertoire C. Comment pourrais je arranger cela ?

    Cordialement


    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
    Sub ImportTextFile()
     
    Dim DestBook As Workbook, SourceBook As Workbook
    Dim DestCell As Range
    Dim RetVal As Boolean
    Dim Chemin As String
     
    ' désactive le rafraichissement de l'écran avant la macro
    Application.ScreenUpdating = False
     
    'chemin en relatif du dossier ou se trouve tes données
    Chemin = "C:\"
    'ou en hard
    'Chemin = "C:\...\dossier"
     
    ' Set object variables for the active book and active cell.
    Set DestBook = ActiveWorkbook
    Set DestCell = Range("A1") 'active la cellule où j'aimerais copier les données
     
    ' Show the Open dialog box.
    RetVal = Application.Dialogs(xlDialogOpen).Show(Chemin & "\*.*")
     
    ' If Retval is false (Open dialog canceled), exit the procedure.
    If RetVal = False Then Exit Sub
     
    ' Set an object variable for the workbook containing the text file.
    Set SourceBook = ActiveWorkbook
     
    ' Copy the contents of the entire sheet containing the text file.
    Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Copy
     
     
    ' active la destination et copie entièrement les éléments du classeur
    DestBook.Activate
    DestCell.PasteSpecial Paste:=xlValues
     
    ' Close the book containing the text file.
    SourceBook.Close False
     
    Application.ScreenUpdating = True
     
    End Sub
    Merci d'avance pour votre aide

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    tu n'as pas l'impression qu'il y a un anti slash en trop la !!!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Chemin = "C:\"
    RetVal = Application.Dialogs(xlDialogOpen).Show(Chemin & "\*.*")
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Merci pour votre aide, le programme fonctionne très bien. Je me demande maintenant s'il est possible de faire choisir une feuille spécifique par une boîte de dialogue, lorsque l'utilisateur aura choisi le fichier à partir duquel copier les données.

    Cordialement

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

Discussions similaires

  1. Importer des données avec VBA
    Par aziz1015 dans le forum Excel
    Réponses: 3
    Dernier message: 17/07/2015, 13h27
  2. [DATA] Importer des données avec TRANSPOSE + dates
    Par Matwix dans le forum SAS Base
    Réponses: 0
    Dernier message: 17/10/2014, 18h32
  3. Importer des données avec une condition
    Par marcelstan dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/05/2014, 16h53
  4. import des données avec des caractères cyrilliques
    Par hebh dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2012, 17h07
  5. Import des données avec contraintes d'intégrités
    Par Marwa_87 dans le forum Import/Export
    Réponses: 2
    Dernier message: 30/04/2012, 16h38

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