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 :

Enregistrer sous en VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut Enregistrer sous en VBA
    Bonjour,

    Je suis sur un fichier Excel "Fichier1.xlsm" dans le dossier C:\USER\Mes documents\Dossier1\Dossier2\Dossier3\Fichier1.xlsm.

    J'ai ouvert le VBA de ce "Fichier1.xlsm" sur lequel j'écris une macro pour ouvrir un "Fichier2.csv" et l'enregistrer sous "Fichier2.xlsx".

    A noter que le chemin du "Fichier2.csv" est : C:\USER\Mes documents\Dossier1\Dossier2\Dossier3\Fichier2.csv.

    J'ai exécuté cette macro mais c'est le fichier Fichier1.xlsm qui est enregistré sous Fichier1.xlsx alors que mon but c'est que le Fichier2.csv soit enregistré sous Fichier2.xlsx.

    Si c'est possible de me communiquer SVP un simple code puisque je suis débutant en VBA.

    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
     
     
        '.....
     
        Dim CheminPC As String
     
        CheminPC = "C:\USER\Mes documents\Dossier1\Dossier2\Dossier3\"
     
        Dim objSaveBox As FileDialog
     
        Set objSaveBox = Application.FileDialog(msoFileDialogSaveAs)
     
        With objSaveBox
     
        .InitialFileName = CheminPC & "Fichier2.csv"
        .FilterIndex = 1
        .Show
        .Execute
     
        End With
     
        '...
    Merci par avance pour votre aide

  2. #2
    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.

    Perso, je ne passerais pas par les boites de dialogue, si le chemin est connu. En affectant le fichier ouvert à une variable, tu maîtriseras quel fichier tu souhaites enregistrer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Dim wb As Workbook
     
      Set wb = Workbooks.Open("C:\USER\Mes documents\Dossier1\Dossier2\Dossier3\Fichier2.csv")
      wb.SaveAs "C:\USER\Mes documents\Dossier1\Dossier2\Dossier3\Fichier2.xlsx", XlFileFormat.xlOpenXMLWorkbook
    "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...
    ---------------

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut
    Bonjour,

    Merci pour votre réponse,

    C'est enregistré sous "Fichier2.xlsx" mais en ouvrant le fichier à le contenu des colonnes est toujours sous csv (.

    A noter que si j'ouvre manuellement le fichier "Fichier2.csv" et je fais enregistrer sous et je sélectionne Classeur Excel et j'enregistre sous "Fichier2.xlsx" alors le contenu des colonnes est bien sous format Excel.

    Merci.

  4. #4
    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
    Je suppose que ton csv utilise le ; comme séparateur de colonnes. Perso, j'ai essayé avec un "vrai" csv avec la virgule comme séparateur et ça fonctionne. Je sais cependant que le ; comme séparateur pose parfois problème lors de l'ouverture par VBA, quels que soient les paramètres renseignés. Il y a un peu de littérature sur le net à ce sujet.

    Mais à relire ton problème initial, le souci n'est pas dans l'ouverture, mais dans la sauvegarde. Pourquoi utiliser la boite de dialogue alors que l'objet Workbook expose la méthode SaveAs que j'ai illustrée dans ma première réponse? il faut savoir que lorsque l'on ouvre un classeur, il devient le classeur actif. Donc, si tu ne changes pas de classeur entretemps, tu peux utiliser ActiveWorkbook comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs "C:\USER\Mes documents\Dossier1\Dossier2\Dossier3\Fichier2.xlsx", XlFileFormat.xlOpenXMLWorkbook
    Ce que je voulais illustrer, c'est que si tu attribues le fichier que tu ouvres (ou que tu viens juste d'ouvrir) à une variable, tu peux manipuler cette variable par la suite pour être sûr de ne pas te mélanger les pinceau entre activeworkbook et thisworkbook qui ne pointent pas toujours vers le même classeur: ActiveWorkbook pointe vers le classeur actif dans l'interface Excel alors que ThisWorkbook pointe vers le classeur qui contient la macro en train de s'exécuter.

    Donc, en fonction de la manière utilisée pour ouvrir ton csv (workbooks.open ou workbooks.opentext, par exemple), tu pourras soit affecter directement le classeur qui s'ouvre à une variable (workbooks.open) soit ouvrir le fichier puis affecter directement le classeur actif (celui qui vient de s'ouvrir) à une variable pour lever l'ambiguïté (workbooks.opentext).
    "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...
    ---------------

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

Discussions similaires

  1. [XL-2007] IE 9 enregistrer ou enregistrer sous en vba
    Par lenovo49 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/09/2015, 11h01
  2. Enregistrer sous avec vba
    Par khech dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/06/2015, 13h12
  3. [VBA EXCEL] : Enregistrer sous
    Par forsay1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/07/2006, 14h52
  4. [VBA-E] Enregistrer Sous
    Par alrolive dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/05/2006, 07h37
  5. [VBA-E] Enregistrer sous un autre format
    Par Bashaq dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/10/2005, 23h33

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