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 :

Macro "Enregistrer sous"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Commercial
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Par défaut Macro "Enregistrer sous"
    Bonjour à tous,

    Merci de prendre le temps de venir lire mon sujet, j'espère savoir expliquer le plus clairement possible mon problème. Je débute en macro et j'essaie de décoder ce qu'il se passe même si je ne suis pas encore trop à l'aise pour innover :p

    J'ai un fichier xlsm forcément, avec des formules de recherche v, index,... Bref. Une macro Archiver présentée ci dessous, se charge "d'enregistrer sous" le document présent sous une forme xls. Il ne sauvegarde que l'onglet actif, et c'est bien normal. J'aimerai savoir s'il est, en théorie, possible de lui faire enregistrer la feuille avec l'affichage "actif/présent" des formules, et non pas la formule en elle même, ou le résultat sous forme d'erreur
    => Eh oui, s'il n'enregistre que le premier onglet, à l'ouverture du fichier xls il ne retrouve pas les sources demandées par les formules et affiche donc de belles erreurs de partout.

    Je pense qu'il doit exister, tout comme pour la copie/colle une forme de collage "valeurs" ou texte, qui s'appliquerait sur une macro Pensez vous que c'est jouable? Si oui, je ne parviens pas à trouver comment exprimer correctement ma recherche :/ Je penserai bien à créer la macro méthode à l'arrache, en l'enregistrant manuellement => le copié/collé brut. Mais voila, c est trop brut et les lignes à copier coller peuvent différer en nombre.

    Merci à vous pour votre aide !



    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
    Sub Archiver()
    Dim extension As String
    Dim chemin As String, nomfichier As String
    Dim style As Integer
    Application.ScreenUpdating = False
    ThisWorkbook.ActiveSheet.Copy
    extension = ".xls"
    chemin = "C:\Users\lereuland\Desktop\"
    nomfichier = ActiveSheet.Range("C9") & " " & Format(Date, "dd-mm") & extension
    With ActiveWorkbook
        .ActiveSheet.DrawingObjects(1).Delete
        .SaveAs Filename:=chemin & nomfichier
        .Close
    End With
    End Sub

  2. #2
    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 faut boucler sur les cellules de la feuille
    pour chaque cellule : sa valeur = sa valeur

    ça va remplacer les formules par les valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Cell as Range
    For Each Cell in ActiveSheet.UsedRange.Cells
        Cell.Value = Cell.Value
    Next Cell

  3. #3
    Membre averti
    Homme Profil pro
    Commercial
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Par défaut
    4 lignes et c'était réglé...

    C'est super astucieux !

    J'ai parfois honte de mes questions, mais merci beaucoup pour cette efficace rapidité !

    Au plaisir de vous relire !

  4. #4
    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
    Pourquoi avoir honte de demander de l'aide ?

    il sert à ça ce forum.

    t'avais besoin d'une méthode, on te la donne.

    et j'espère surtout qu'elle t'as permis d'apprendre et de pouvoir réutiliser ça

    on peut optimiser mon code (merci rdurupt !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value

  5. #5
    Membre averti
    Homme Profil pro
    Commercial
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    on peut optimiser mon code (merci rdurupt !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
    Oui tout ce que j apprends en faisant mon tableau Excel tout ce que j ai eu à chercher j ai fait en sorte de le réutiliser du coup la encore ça M aide mais il y a tellement de choses à savoir C est énorme du coup ça change quoi en fait value plutôt que cells? L'autre appellation peut générer des erreurs?

  6. #6
    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
    Les deux codes font exactement la même chose, mais pas de la même manière

    si l'un marche, l'autre marchera forcément ... et inversement !
    en revanche, là où je parcours chaque cellule de la plage de données de ta feuille active pour fixer la valeur des formules, rdurupt effectue la fixation directement sur la collection de cellules de cette plage.

    son code est d'autant plus rapide à l'exécution, que ta plage de données est grande

Discussions similaires

  1. Macro pour enregistrer sous / nom du fichier
    Par vinzu dans le forum VBA Word
    Réponses: 12
    Dernier message: 05/11/2014, 18h19
  2. Macro d'enregistrement sous un nom
    Par caligoose dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/12/2007, 18h17
  3. [VB] macro pour enregistrer sous
    Par CélineM dans le forum SDK
    Réponses: 1
    Dernier message: 07/06/2007, 12h28
  4. macro pour enregistrer sous
    Par macromega dans le forum Général VBA
    Réponses: 2
    Dernier message: 03/05/2007, 19h17

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