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 :

Modification et sauvegarde d'un classeur sans message de confirmation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Par défaut Modification et sauvegarde d'un classeur sans message de confirmation
    Bonjour à tous,

    J'ai écrit une macro sous excel 2016 qui fonctionne sous excel 2016 (PC perso) mais qui a un comportement différent sous Excel 2010 (PC pro)

    La macro est très simple, elle ouvre tous les fichiers .xls d'un répertoire, copie des données et écrit des données dans les fichiers lus.

    J'utilise l'instruction workbook.Close True pour fermer le classeur en l'enregistrant.

    Sous excel 2016, tout se passe bien

    Sous excel 2010, le message "voulez-vous sauvegarder les modifications" apparait après traitement de chaque fichier.

    J'ai essayé les option DisplayAlerts True/False sans succès

    Voici le code ci dessous, merci pour votre aide,
    Jnoel
    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
     
     
    Sub Macro2()
    Dim CD As Workbook
    Dim CA As String
    Dim F As String
    Dim CS As Workbook 'définit la classeur
    Dim O As Worksheet 'déclare la variable O (Onglets)
    Dim DL As Long 'déclare la variable DL (Dernière Ligne)
    Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
    Dim offset As Double
    Set CD = ThisWorkbook 'définit le classeur destination CD
    Set OD = CD.Worksheets("Synthèse") 'définit l'onglet destination OD
     
    offset = 1
     
    Set CD = ThisWorkbook 'définit le classeur destination CD
    CA = "E:\JEROME\excel\fichiers_sources\" 'définit la chemin d'acces du dossier, il faut que ça finnisse par "\" (à adapter)
    F = Dir(CA & "*.xlsx") 'définit le premier fichier F avec extension .xlsx ayant CA comme chemin d'accès (extension à adapter)
    Do While F <> "" 'exécute tant qu'il existe des fichiers
        Application.Workbooks.Open (CA & F) 'ouvre le fichier F
        Set CS = ActiveWorkbook 'définit le classeur source CS
        For Each O In CS.Worksheets 'boucle sur tous les onglets O du classeur source CS
            DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O (colonne à adapter selon le cas)
     
            O.Activate
            'copie de la plage ("A2", "A" et dernière ligne de la feuille O dans la feuille OD)
            O.Range("A3") = "TEST"
            O.Range("A2", "A" & DL).Select
            Selection.Copy Destination:=OD.Range("A" & offset)
     
            'copie de la plage ("C2", "C" et dernière ligne de la feuille O dans la feuille OD)
             O.Range("C2", "C" & DL).Select
            Selection.Copy Destination:=OD.Range("C" & offset)
     
            'copie de la plage ("D2", "D" et dernière ligne de la feuille O dans la feuille OD)
             O.Range("D2", "D" & DL).Select
            Selection.Copy Destination:=OD.Range("D" & offset)
     
           'renvoie dans la colonne G le nom de l'onglet O
            OD.Range("G" & offset, "G" & offset - 2 + DL).Value = O.Name
     
     
            Debug.Print "i" & i
            Debug.Print "offset" & offset
            Debug.Print "DL" & DL
            offset = offset + DL - 1
     
        Next O 'prochain onglet de la boucle
        CS.Close True 'ferme le classeur source en l'enregistrant
        F = Dir 'définit le prochain fichier F ayant avec extension .xlsx ayant CA comme chemin d'accès (extension à adapter)
    Loop 'boucle
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        CS.Save
        CS.Close SaveChanges:=False

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        CS.Save
        CS.Close SaveChanges:=False
    Bonjour,

    merci pour ton retour,

    J'ai essayé, je n'ai plus le message "voulez-vous enregistrer le fichier" mais les modifications apportées aux fichiers traités ne sont pas sauvegardées.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Avec un CS.Save, je ne vois pas comment il pourrait ne pas y avoir d'enregistrement.
    As-tu vérifié le bon fichier ?

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Par défaut
    Bonjour, mes fichiers sources issues d’une base de données étaient protégés en écriture. Le fonctionnement est maintenant OK. Merci!

Discussions similaires

  1. Fermeture d'un fichier et excel sans message de confirmation
    Par Tournament dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/08/2015, 19h43
  2. [XL-2010] Fermer un fichier sans message de confirmation
    Par benoaa dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/07/2014, 15h56
  3. Réponses: 12
    Dernier message: 26/01/2012, 15h44
  4. Réponses: 2
    Dernier message: 15/03/2009, 14h06
  5. [Excel] Sauvegarder un classeur sans userform
    Par maketossss dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 10/12/2005, 16h41

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