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 :

Undo et macros [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 39
    Par défaut Undo et macros
    Bonjour,
    Je travaille sur un dossier Excel qui comporte pas mal de feuilles et de macros et je bute sur le fait qu'il est impossible d'annuler les opérations effectuées par macro.
    Si par exemple j'efface par erreur une plage de cellules par une macro, il est impossible de revenir en arrière sans tout ressaisir manuellement...
    Pour pallier cet inconvénient, j'ai pensé avant suppression, sauvegarder les cellules dans un tableau de type variant, gardé en mémoire jusqu'à fermeture du classeur et en cas d'erreur, je peux revenir en envoyant dans ma plage de cellules, les valeurs et formules stockées dans le tableau. En mettant 5 ou 5 niveau de tableaux en mémoire, je peux ainsi revenir autant de fois en arrière.
    Hélas, s'il est facile de sauvegarder les valeurs, avec la propriété .value et les formules avec .formula je ne trouve pas comment passer les formats (polices, couleurs, encadrement, etc.) au tableau pour les restituer ensuite à la feuille de calcul. Bien entendu, je peux stocker tout ça dans d’autres feuilles mais comme j'aurais à sauvegarder des plages provenant d'une quinzaine de feuilles, ce serait beaucoup plus lent qu'avec des tableaux.
    Bref, j'ai sans doute mal cherché mais j'avoue que je sèche...
    Si une âme charitable pouvait m'indiquer l'astuce, j'en serai vraiment ravi.
    En attendant, je souhaite de bonnes fêtes à ceux qui me liront.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En principe si l'on programme une suppression de données on doit être certain de ce que l'on fait et on prévoit par exemple une boîte de dialogue (MsgBox) avec la possibilité de répondre par la négative à la question "Etes-vous certain de vouloir supprimer les données (Oui/Non) " en mettant le focus du contrôle sur le bouton affichant Non.

    Maintenant s'il par précaution tu souhaites tout de même pouvoir rétablir la situation après suppression, je choisirais tout simplement la copie de la plage de données, de la feuille ou du classeur suivant le cas. Bien plus simple à mettre en place que la construction d'une usine à gaz telle que remettre valeurs, formules, plusieurs format, etc.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Fais une recherche Web avec
    Creating An Undo Handler To Undo Changes Done By Excel VBA

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Il me semble que la seule chose qui te manque c'est de te conformer à la loi du moindre effort et de mettre une ligne en début de macro pour faire une copie de sauvegarde de ton classeur sous un autre nom ou dans un autre dossier.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 39
    Par défaut
    Bonsoir et merci à tous d'avoir répondu si vite.

    En fait, la sauvegarde du classeur sous un autre nom, c'est déjà ce que je fais, mais je cherche mieux.

    Bref ! Ma question était simple, elle était de savoir s'il existe d'autres propriétés que .value et . formula, notamment des propriétés de format qu'on peut facilement copier dans un tableau. Du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTableau =Worksheets(4).Range("G3:Z" & MaxLign).Formula
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTableau =Worksheets(4).Range("G3:Z" & MaxLign).Value
    Ça marche déjà très bien avec les formules et c'est bien, mais je voudrais faire suivre le format des cellules, ce serait mieux.

    Bien sûr je peux me contenter de transférer les contenus par des tableaux pour gagner de la vitesse (pour le fun) et recopier le format des cellules restantes ou alors copier le format sur une autre feuille pour aller le chercher au cas où, mais ça me plait moins...
    Donc si quelqu'un sait. Je prends

    Mais de toute façon, en programmation, ce qui est bien, c'est qu'il y a souvent plusieurs chemins pour aller d'un point à un autre. Si une solution ne marche pas, on en cherche une autre...
    Bonne soirée de Noël.
    Cordialement.
    Philippe

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoitr 2 solutions s'offrent a toi pour memoriser la plage et ses formatage
    1. un sheets provisoire
    2. la copie en html dans un webbrowser qui peux etre repasté
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 39
    Par défaut
    Bonjour,
    Je vais cocher « résolu » car d’une part, il apparait qu’il n’existe pas de fonction simple pour transférer les propriétés de format à un tableau.
    Et d’autre part, quoiqu’assez allergique à la lecture de langue de Shakespeare, je pense que la suggestion faite hier à 17h46 par Patrice740 est une excellente piste que je vais m’efforcer d’explorer en faisant taire mes ressentiments contre les anglais (qui pourraient quand même s’exprimer dans une langue que tout le monde comprend sans efforts.) Mais je m’éloigne alors d’une solution ultra simple que je recherchais.
    Il n’en demeure pas moins que je suis surpris qu’on puisse copier les formats dans le presse-papier et qu’on ne puisse pas les stocker ailleurs que dans ce dernier ou appliqués à d’autres cellules...
    Merci à Philippe, Patrice, Clément et Patrick.
    Bonne journée et A+
    Ph

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

Discussions similaires

  1. [VB6] Exécuter une macro Access
    Par Nektanebos dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 22/02/2006, 16h32
  2. Faire un undo sur une macro
    Par cbonnard dans le forum Général VBA
    Réponses: 15
    Dernier message: 19/10/2005, 17h19
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 03h38
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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