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 :

Problème d'importation de fichier Excel par macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Problème d'importation de fichier Excel par macro
    Bonjour,

    j'ai fait une macro qui me permettrait de copier un fichier sélectionné sur le disque directement à une feuille de calcul en l'appliquant à un bouton de commande, je rencontre trois difficultés :

    1 - une boîte de dialogue apparaît pour demander à l'utilisateur de sélectionner le fichier, je ne sais pas comment utiliser le fichier directement sans passer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogOpen).Show(Chemin & "Export tempo\réseau en cours.xl*")
    J'aimerais que les données soient importées directement sans demander d'ouvrir le fichier. Est ce que c'est possible ?

    2-Après avoir sélectionné le fichier, une boîte de dialogue apparaît pour gérer l'import (choisir le format, le séparateur des colonnes), j'aimerais éviter cela.

    3-La macro n'importe pas correctement le format de date, les dates ne sont plus toutes regroupées par année, du coup cela me fausse le filtre sur la date, c'est le plus embêtant !

    Pourriez vous m'aider svp ?

    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
    'DestBook = classeur de dstination et SourceBook=classeur source
     
    Dim DestBook As Workbook, SourceBook As Workbook
    Dim DestCell As Range
    Dim RetVal As Boolean
    Dim Chemin As String
     
    ' désactiver le rafraichissement de l'écran avant la macro
    Application.ScreenUpdating = False
     
    'chemin en relatif du dossier ou se trouve tes données
    Chemin = "C:\"
     
    ' Set object variables for the active book and active cell.
    Set DestBook = ActiveWorkbook
    Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).ClearContents
    Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).ClearFormats
    Set DestCell = Range("A1") 'active la cellule où j'aimerais copier les données
     
    'Ouvre la boîte de dialogue
    RetVal = Application.Dialogs(xlDialogOpen).Show(Chemin & "Export tempo\réseau en cours.xl*")
     
     
    ' If Retval is false (Open dialog canceled), exit the procedure.
    If RetVal = False Then Exit Sub
     
    ' active le classeur à partir duquel copier les données
    Set SourceBook = ActiveWorkbook
     
    ' copie entièrement la feuille de calcul
    Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Copy
     
    ' Active la feuille de destination et une cellule de cette feuille
    DestBook.Activate
    DestCell.Activate
    ActiveSheet.Paste
    'colle les formats et les valeurs des cellules
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:= _
          xlNone, SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
          xlNone, SkipBlanks:=False, Transpose:=False
          Application.CutCopyMode = False
    SourceBook.Close False
     
    Application.ScreenUpdating = True
    Application.DisplayAlerts = False
    ActiveSheet.Name = "en cours liste complète réseau"
    ' Ferme le classeur contenant les données à copiée
    Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    a ta question 1
    si tu veux recuperer les données sans ouvrir va voir
    http://silkyroad.developpez.com/VBA/ClasseursFermes/


    Question 2
    Tes fichiers sont de quels type ?

    Question 3
    Pour bien comprendre comment on gère des dates

    http://didier-gonard.developpez.com/...-excel-et-vba/

    je pense que cela va t'aider

    A+

  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
    Merci pour ta réponse, ce n'est pas une question de gestion de dates là, j'ai bien lu ce tutoriel pour mes filtres sur les dates. Lorsque j'importe le fichier tout simplement, il ne me copie pas les dates correctement, je pense plus que c'est un problème de collage de format ou un truc du genre.

    Cordialement

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Question 2
    Tes fichiers sont de quels type ?
    quand tu dis : " il ne me copie pas les dates correctement" peux dire ce qu'il te ramènes ?

    donne un exemple au besoin

    A+

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il y a une raison t'ayant amené à faire un Collage Spécial plutôt qu'une copie simple ?

  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 Igloobel Voir le message
    quand tu dis : " il ne me copie pas les dates correctement" peux dire ce qu'il te ramène ?

    donne un exemple au besoin

    A+
    Bonjour,

    Il me copie certaines dates avec le bon "format" et certaines avec le format texte, j'ai un peu triché en faisant cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'copie les valeurs et les formats des cellules
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
     
    'copie le format de la feuille
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
          xlNone, SkipBlanks:=False, Transpose:=False
          Application.CutCopyMode = False
    SourceBook.Close False
    Je me disais qu'il y avait un moyen d'avoir les deux sans séparer ! Quelqu'un en serait plus sur le 1 ? J'aimerais éviter de passer par les bases de données !

    Merci d'avance

    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    il y a une raison t'ayant amené à faire un Collage Spécial plutôt qu'une copie simple ?
    OUI ! Au départ, j'avais fait avec l'enregistreur de macros une copie d'une feuille que j'ouvrais et dont je collais les données dans ma feuille active, et j'ai juste adapté le code après mais je me suis rendu compte que tout n'était pas vraiment fait comme je voulais, il y avait le problème du format de la feuille et du format de certaines dates qui devenaient des textes !

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

Discussions similaires

  1. Problème d'importation de fichier excel
    Par couanp dans le forum MATLAB
    Réponses: 7
    Dernier message: 30/04/2007, 11h49
  2. [Importation]Importer un fichier Excel par code
    Par Bes74 dans le forum Access
    Réponses: 1
    Dernier message: 03/04/2007, 12h46
  3. ouverture auto d'un fichier excel par macro access
    Par pascal913 dans le forum Access
    Réponses: 5
    Dernier message: 26/07/2006, 16h50
  4. ouverture auto d'un fichier excel par macro
    Par pascal913 dans le forum Access
    Réponses: 2
    Dernier message: 26/07/2006, 12h45
  5. transfert contenu fichier excel par macro
    Par pascal913 dans le forum Access
    Réponses: 7
    Dernier message: 12/07/2006, 11h01

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