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 avec SaveAs [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    en reconversion professionnelle
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : en reconversion professionnelle

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut Problème avec SaveAs
    Bonjour,
    J'utilise VBA en tâtonnant depuis quelques mois (quelques lectures, utilisation Enregistreur de macro et recherches de bout de codes sur le net).
    Aujourd'hui c'est en désespoir de cause que je fais ce message car j'ai un bug tout bête mais que je n'arrive pas à résoudre...
    Pour le boulot, je dois ouvrir des fichiers csv les modifier et les enregistrer dans un répertoire dédié. Ma macro a fonctionné une ou deux fois mais à présent j'ai un message
    Erreur d’exécution 1004 - La méthode SaveAs de l'objet Workbook a échoué
    Je sais que ma question semble basique, mais je ne comprends pas pourquoi elle ne fonctionne plus Je vous remercie d'avance pour l'aide que vous pourrez m'apporter, cela fait déjà pas ma de temps que je cherche. (mon code ci-dessous)
    Cathy

    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
    Option Explicit
    Sub AutresEtats() 'ouvrir un csv , modifier et l'enregistrer en excel 
    Const sep = ";"  ' séparateur cellules
    Dim CH As String 'déclare la variable CH (CHemin d'accès)
    Dim CH2 As String 'déclare la variable CH2 (chemin d'enregistrement)
    Dim F As String 'déclare la variable F (Fichier cvs)
    Dim nom As String
    Dim ND As String       'déclare la variable du nom de fichier code + libellé
    Dim cel As Range, tbd
    Dim nomfeuille As String
    Dim DerCol As Integer
     
    nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date)
    CH = "U:\PUBLIC\COMMUN\CIGAP\ETATS\MISE A DISPO DES ETATS\"
    CH2 = "U:\PUBLIC\COMMUN\CIGAP\ETATS\MISE A DISPO DES ETATS\ETATS _ AUTRES\"
    F = Dir(CH & "*.csv") 'définit le premier fichier .csv du dossier ayant CH comme chemin d'accès
     
    '***************************BOUCLE SUR TOUS LES FICHIERS CSV DU REPERTOIRE ********************************************
     
    Do While F <> "" 'boucle tant qu'il existe des fichiers .csv
    Workbooks.Open CH & F 'ouvre le fichier F
    For Each cel In ActiveSheet.UsedRange.Cells
        tbd = Split(cel & sep, sep)
        cel.Resize(1, UBound(tbd)).Value = tbd
    Next cel
    DerCol = Cells(2, Columns.Count).End(xlToLeft).Offset(, 1).Select
    'ajouter deux colonnes en fin de fichie : "DATE" et "COMMENTAIRES"
        ActiveCell.FormulaR1C1 = "Commentaires"
        ActiveCell.Offset(, 1).Select
        ActiveCell.FormulaR1C1 = "Date"
    nomfeuille = Sheets(1).Name
        Sheets(1).Select
        Range("cv1").Formula = nomfeuille   'récupérer le nom de l'état sur l'onglet
        Range("cw1").Select
        ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],4)"  'récupérer les 4 premiers caractères > code de l'état
        Range("CX1").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-1],'[TRI ET REPARTITION ETATS.xlsm]Liste etats SURF'!R1C1:R261C2,2,)" ' Récupérer le libellé de l'état
           Range("CY1").Select
          ActiveCell.FormulaR1C1 = "=CONCATENATE("" ""&RC[-1])"
       Range("a1").Select
       ND = Range("Cy1").Value 'nom de l'état : code + libellé
     
    ActiveWorkbook.SaveAs Filename:=CH2 & nom & ND & ".xlsx", FileFormat:=xlOpenXMLWorkbook   'enregistre le fichier au format Excel
    ActiveWorkbook.Close 'ferme le fichier
    F = Dir 'définit le prochain fichier .csv
    Loop 'boucle
     
    ' ************************************* recherche des fichiers csv pour les supprimer******************************
    F = Dir(CH & "*.csv") 'définit le premier fichier .csv du dossier ayant CH comme chemin d'accès
    Do While F <> ""
    Kill "U:\PUBLIC\COMMUN\CIGAP\ETATS\MISE A DISPO DES ETATS\" & F
            F = Dir
    Loop
    MsgBox "Traitement terminé pour tous les état 'autres' ", vbInformation, "____________________ Etat SURF  _________________________ "
    End Sub

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Cathy,

    Sois la bienvenue sur ce Forum,

    Peut-être une piste:
    - Avant sauvegarde, Instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print CH2 & nom & ND & ".xlsx"
    avec point d'arrêt (clic sur la marge gauche du code, un poit généralement de couleur bordeaux s'affiche)
    Pour en observer le résultat, afficher la fenêtre Exécution dans l'éditeur VBE (CTRL + G) puis lancer l'exécution de la procédure et F8 sur la ligne en surbrillance
    - Effectuer cette sauvegarde manuellement afin de constater une erreur possible (nom du fichier...) en effectuant un copier/coller depuis cette fenêtre

  3. #3
    Futur Membre du Club
    Femme Profil pro
    en reconversion professionnelle
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : en reconversion professionnelle

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut
    Bonjour Marcel et mille mercis ! Je ne connaissais pas la fenêtre EXECUTION et c'est au top ! car d'un clin d’œil j'ai (enfin !) compris ce qu'il se passait
    En effet, j'ai relevé ce que voulait faire EXCEL VBE, en copiant- collant comme tu me l'as recommandé : voici

    U:\PUBLIC\COMMUN\CIGAP\ETATS\MISE A DISPO DES ETATS\ETATS _ AUTRES\20-5-2019 bphx Salariés : Fichier des avenants non signés.xlsx

    Et bien entendu ce qui pose problème c'est les ":" dans le nom du fichier dans ma table de données
    Je te suis très reconnaissante, merci
    Bonne journée !
    Cathy

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Cathy,

    Ravi que tu aies résolu ta problématique.

    A noter.
    Outre les variables espions et la fenêtre des variables locales, la fenêtre Exécution peut aussi être utile pour contrôler certaines données.
    Pour ce faire, il suffit de précéder l'instruction d'un point d'interrogation puis d'activer la touche "Enter" du clavier.

    Exemple.
    Quelques conseils enfin:
    - Baliser tout code reporté par les bornes #
    - Indenter le code en plaçant en retrait les lignes comprises dans un bloc (With, If, Do....). Il n'en sera que plus lisible.


    Bonne continuation et à bientôt.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    en reconversion professionnelle
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : en reconversion professionnelle

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut Merci !
    Bonjour Marcel et merci pour ce petit "supplément" Je vais en tenir compte pour mes prochaines macros
    A +

  6. #6
    Invité de passage
    Homme Profil pro
    Chef de Chantier FTTH
    Inscrit en
    Octobre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de Chantier FTTH
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2020
    Messages : 1
    Par défaut Problème avec SaveAs
    Bonjour a tous,

    je me permet d'exposer mon probleme dans cette discution car j'ai le même message d'erreur

    "Erreur d’exécution 1004 - La méthode SaveAs de l'objet Workbook a échoué".

    Pour mon travail nous devons utilisé un fichier excel modifiable pour généré un CSV.

    Lorsque je veux générer ce CSV j'ai une fenêtre qui apparait avec ce fameux message d'erreur qui apparait.

    J'ai donc deux options soit je clique sur fin soit sur débogage.

    J'ai fait plusieurs capture d'écran.

    Merci pour votre aide.

    Nom : 1.jpg
Affichages : 2047
Taille : 425,6 KoNom : 2.jpg
Affichages : 1985
Taille : 406,0 KoNom : 3.jpg
Affichages : 1967
Taille : 509,6 KoNom : 4.jpg
Affichages : 1981
Taille : 375,9 Ko

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

Discussions similaires

  1. [XL-2010] Macro VBA : Problème avec SaveAs Worksheet en .txt format MS-DOS
    Par SpaceX dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 14/09/2018, 15h00
  2. [OL-2010] Problème avec SAVEAS
    Par fclus dans le forum VBA Outlook
    Réponses: 13
    Dernier message: 17/02/2014, 15h23
  3. [XL-2003] Macro VBA : Problème avec SaveAs Worksheet en .txt
    Par tity333 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/08/2010, 16h16
  4. problème avec saveas
    Par jpb388 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/11/2007, 12h56
  5. [VBA]problème avec SaveAs
    Par porki dans le forum Access
    Réponses: 3
    Dernier message: 29/05/2006, 14h52

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