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'extraction données Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Problème d'extraction données Excel
    Je rencontre un problème lorsque j'extrais des données d'un fichier excel. En effet j'ai créé une macro qui me permet d'extraire automatiquement des données de plusieurs onglets, et de les envoyer dans un répertoire bien précis que je précise dans une cellule de mon classeur.
    Seulement voilà, au moment de l'extraction j'ai les guillemets qui sont en doubles ...

    Avez-vous une idée ??


    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Sub Macro1()
     
    Dim CH As String 'déclare la variable CH (CHemin d'accès)
    Dim ceClasseur As Workbook
    Dim Sh1 As Worksheet
    Dim Sh2 As Worksheet
    Dim OD As Worksheet
    'Definition des variables
    Set ceClasseur = ThisWorkbook
    Set Sh1 = ceClasseur.Sheets("Onglet 1")
    Set Sh2 = ceClasseur.Sheets("Onglet 2")
     
    '-----------------------------------------
    'Traitement onglet 1
    '-----------------------------------------
     CH = Sheets("procédure").Range("A30")
    'ajoute un classeur vierge
     Workbooks.Add
    'définit le classeur CD
     Set CD = ActiveWorkbook
    'définit l'onglet OD
     Set OD = CD.Sheets(1)
    'copy les données de la colonne A de l'onglet OO
     Sh1.Range("A1").CurrentRegion.Copy
    'les colle dans A1 de l'onglet OD
     OD.Range("A1").PasteSpecial (xlPasteValues)
    'copy les données de la colonne D de l'onglet OO
     Sh1.Range("D1").CurrentRegion.Copy
    'les colle dans la première cellule vide de la colonne A de l'onglet OD
     OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)
     
    'Sauvegarde du fichier CSV
    CD.SaveAs Filename:=CH & "\" & "mensuel.csv", _
               FileFormat:=xlCSV, _
               CreateBackup:=False, _
               Local:=False
    'Fermeture du classeur
    CD.Close savechanges:=False
     
    '-----------------------------------------
    'Traitement onglet 2
    '-----------------------------------------
    CH = Sheets("procédure").Range("A32")
    'ajoute un classeur vierge
     Workbooks.Add
    'définit le classeur CD
     Set CD = ActiveWorkbook
    'définit l'onglet OD
     Set OD = CD.Sheets(1)
    'copy les données de la colonne A de l'onglet OO
     Sh2.Range("A1").CurrentRegion.Copy
    'les colle dans A1 de l'onglet OD
     OD.Range("A1").PasteSpecial (xlPasteValues)
     
    'Sauvegarde du fichier CSV
    CD.SaveAs Filename:=CH & "\" & "mensuel_fc.csv", _
               FileFormat:=xlCSV, _
               CreateBackup:=False, _
               Local:=False
    'Fermeture du classeur
    CD.Close savechanges:=False
     
    End Sub
    Fichier en sortie :

    """10/14"";""010101"";""FC2015_1"";""4323.55"";""201501"""
    """10/14"";""010103"";""FC2015_1"";""2126.09"";""201501"""
    """10/14"";""010104"";""FC2015_1"";""3901.97"";""201501"""
    """10/14"";""010105"";""FC2015_1"";""1578.46"";""201501"""
    """10/14"";""010131"";""FC2015_1"";""903.17"";""201501"""
    """10/14"";""010132"";""FC2015_1"";""734.64"";""201501"""
    """10/14"";""010133"";""FC2015_1"";""574.80"";""201501"""
    """10/14"";""010134"";""FC2015_1"";""461.88"";""201501"""
    """10/14"";""010201"";""FC2015_1"";""519.23"";""201501"""
    """10/14"";""010202"";""FC2015_1"";""1902.56"";""201501"""
    """10/14"";""010203"";""FC2015_1"";""3037.69"";""201501"""
    """10/14"";""010204"";""FC2015_1"";""2948.92"";""201501"""
    """10/14"";""010205"";""FC2015_1"";""5197.07"";""201501"""
    """10/14"";""010209"";""FC2015_1"";""636.42"";""201501"""
    """10/14"";""010210"";""FC2015_1"";""2668.70"";""201501"""
    """10/14"";""010211"";""FC2015_1"";""5131.11"";""201501"""
    """10/14"";""010212"";""FC2015_1"";""4174.22"";""201501"""
    """10/14"";""010213"";""FC2015_1"";""0.00"";""201501"""
    """10/14"";""010215"";""FC2015_1"";""1192.19"";""201501"""
    """10/14"";""010216"";""FC2015_1"";""2245.11"";""201501"""
    """10/14"";""010217"";""FC2015_1"";""0.00"";""201501"""
    """10/14"";""010219"";""FC2015_1"";""815.05"";""201501"""
    """10/14"";""010230"";""FC2015_1"";""406.17"";""201501"""
    """10/14"";""010231"";""FC2015_1"";""281.70"";""201501"""
    """10/14"";""010232"";""FC2015_1"";""165.44"";""201501"""
    """10/14"";""010233"";""FC2015_1"";""668.68"";""201501"""
    """10/14"";""010234"";""FC2015_1"";""0.00"";""201501"""
    """10/14"";""010235"";""FC2015_1"";""608.05"";""201501"""
    """10/14"";""010236"";""FC2015_1"";""337.30"";""201501"""
    """10/14"";""010237"";""FC2015_1"";""693.82"";""201501"""
    """10/14"";""010238"";""FC2015_1"";""0.00"";""201501"""
    """10/14"";""010239"";""FC2015_1"";""347.61"";""201501"""
    """10/14"";""010240"";""FC2015_1"";""0.00"";""201501"""
    """10/14"";""010241"";""FC2015_1"";""0.00"";""201501"""
    """10/14"";""010242"";""FC2015_1"";""0.00"";""201501"""


    Fichier source : http://www.cjoint.com/data/0AjjCSu98yK.htm

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    J'ai testé la ligne de code enregistrant un fichier texte depuis un classeur de test : aucun souci !

    Me.SaveAs "D:\Tests4Noobs\mensuel_fc.csv", xlCSV, CreateBackup:=False

    J'obtiens un fichier sans aucun guillemet avec la virgule comme séparateur.
    J'en déduis donc les cellules sources contiennent des guillemets : les supprimer donc …

    Sinon ne pas utiliser cette méthode mais le standard VBA pour enregistrer un fichier texte,
    voir l'aide VBA concernant l'instruction Print # et son exemple
    tout comme les discussions de ce forum traitant le même sujet !

    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ton retour, toutefois ce que je souhaite c'est ne plus avoir de guillemets en double, et non plus du tout de guillemets ! Quant à la fonction #print je ne l'a connais pas. Peux-tu m'en dire un peu plus ?

    De plus si je supprime les guillemets dans mon fichier source je n'arrive plus à avoir des guillemets après mon séparateur. Ce qui est pour moi le ;
    Dernière modification par Invité ; 15/01/2015 à 13h10. Motif: Citation inutile

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Pour le séparateur point-virgule, utiliser le paramètre Local:=True

    Sinon tout est déjà dans l'aide VBA intégrée et son exemple, inutile que j'effectue un Copier/Coller
    Inutile aussi de quoter le message précédent …



    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut Démonstration …

    Exemple d'un bloc de cellules sans guillemet commençant dans la cellule A1.

    A partir des lignes du bloc de cellules autour de la première cellule,
    création d'une variable tableau texte de leur nombre
    puis conversion de chaque ligne dans cette variable tableau.

    Création d'un fichier texte en écriture,
    écriture des lignes de la variable tableau séparées par un saut de ligne
    puis fermeture du fichier texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Demo()
        With Cells(1).CurrentRegion.Rows
            ReDim T$(1 To .Count)
     
            For R& = 1 To .Count
              T(R) = """" & Join$(Application.Index(.Item(R).Resize(2).Value, 1), """;""") & """"
            Next
        End With
     
        Open "D:\Tests4Noobs\Test .txt" For Output As #1
        Print #1, Join$(T, vbNewLine);
        Close #1
    End Sub
    En à peine dix lignes de code, à adapter selon la source des données …


    Une autre règle du forum (comme celle d'écrire un titre de discussion explicite !) :
    __________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  6. #6
    Invité
    Invité(e)
    Par défaut Amabilité
    Merci pour tes "conseils" même si j'y comprend rien. Si moi je "manque" aux règles de ce forum, toi tu manques aux règles de politesse. Tu n'es pas obligé de me prendre de haut. Sachant que tu n'as pas aidé à résoudre mon problème non plus !! Explicite ou pas !

Discussions similaires

  1. [XL-2003] extraction donnée excel
    Par pythfred dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2012, 14h49
  2. [V6] Problème d'extraction sous excel
    Par zignouille dans le forum Deski
    Réponses: 1
    Dernier message: 26/11/2009, 14h10
  3. problème transfert de données excel --> access
    Par Semoule dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/06/2009, 23h19
  4. Problème Import de données Excel dans Access
    Par francoisd dans le forum Access
    Réponses: 1
    Dernier message: 08/09/2006, 17h46
  5. problème pour importer données excel dans Access
    Par sarah67 dans le forum Access
    Réponses: 8
    Dernier message: 20/02/2006, 08h17

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