XL 2010 Créer un bouton de restauration

mostefa mokhtar

XLDnaute Nouveau
Bonjour,

Je souhaite utiliser le bouton "RESTAURE" pour effacer toutes les modifications (contenu et format) apportées à la feuille "FACTURE".

Cependant, j'ai peur d'effacer par inadvertance une ligne ou une colonne, ce qui pourrait altérer le modèle type.

Il est important de noter que le bouton existant efface uniquement les données, mais ne rétablit pas la feuille à sa version originale.

J'utilise Microsoft Excel 10.
 

Pièces jointes

  • STOCK 1.xlsm
    375 KB · Affichages: 14

mostefa mokhtar

XLDnaute Nouveau
Bonsoir,
Le plus simple à mes yeux serait d'avoir une feuille modèle inaccessible à l'utilisateur.
Il suffirait alors de recopier ce modèle dans la Facture lors de la ré initialisation..
De plus on peut utiliser un mot de passe pour tout protéger hormis la zone C16:E55.
Merci pour votre réponse, mais je pense qu'un bouton est plus pratique car plusieurs personne utilisent ce classeur.
Le bouton "RESTAURE" existant n'efface que les données qui sont ajoutées mais ne restaure pas une ligne ou une colonne supprimée par mégarde.
 

Franc58

XLDnaute Occasionnel
Merci pour votre réponse, mais je pense qu'un bouton est plus pratique car plusieurs personne utilisent ce classeur.
Le bouton "RESTAURE" existant n'efface que les données qui sont ajoutées mais ne restaure pas une ligne ou une colonne supprimée par mégarde.
Bonjour, je ne vois pas en quoi la méthode de sylvanu est incompatible avec un bouton ??? Tu crées la macro de copie et tu l'affectes au bouton non ?
 

Franc58

XLDnaute Occasionnel
Voici une suggestion basée sur l'idée de sylvanu. Dans le classeur il y a un feuille cachée nommée "Modèle" et qui contient une copie vierge de la facture. Un clic sur le bouton "Restaure" et la macro va supprimer la feuille "Facture", recopier la feuille "Modèle" et la renommer en "Facture".

VB:
Sub EffaceDonnées()
    Dim wsSource As Worksheet
    Dim wsDestination As Worksheet

    Set wsSource = ThisWorkbook.Sheets("Modèle")
    Set wsDestination = ThisWorkbook.Sheets("Facture")

    ' Copier la feuille source avant la feuille de destination
    wsSource.Copy Before:=wsDestination

    ' Supprimer la feuille "Facture" existante
    Application.DisplayAlerts = False ' Désactiver les alertes
    wsDestination.Delete
    Application.DisplayAlerts = True ' Réactiver les alertes

    ' Renommer la nouvelle feuille copiée en "Facture"
    With Sheets(1)
        .Name = "Facture"
        .Visible = True
        .Activate
    End With
    
End Sub
 

Pièces jointes

  • STOCK 1.xlsm
    547 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour le fil,
[ Franchement à labour, mais comme c'est fait, je livre. :) ]
Comme le dit Franc :
je ne vois pas en quoi la méthode de sylvanu est incompatible avec un bouton ???
Dans la PJ, une feuille Modèle est crée et masquée.
Quand on Restaure, on supprime la feuille Facture, on duplique et renomme la feuille Modèle.
Donc ainsi "impossible" de bidouiller la feuille.
Et j'ai protéger les zones qui n'ont pas à être modifier.
 

Pièces jointes

  • STOCK 1 (1).xlsm
    534.4 KB · Affichages: 10
Dernière édition:

mostefa mokhtar

XLDnaute Nouveau
Bonjour le fil,
[ Franchement à labour, mais comme c'est fait, je livre. :) ]
Comme le dit Franc :

Dans la PJ, une feuille Modèle est crée et masquée.
Quand on Restaure, on supprime la feuille Facture, on duplique et renomme la feuille Modèle.
Donc ainsi "impossible" de bidouiller la feuille.
Et j'ai protéger les zones qui n'ont pas à être modifier.
merccccccccccccccccci !!!
 

mostefa mokhtar

XLDnaute Nouveau
merccccccccccccccccci !!!
Voici une suggestion basée sur l'idée de sylvanu. Dans le classeur il y a un feuille cachée nommée "Modèle" et qui contient une copie vierge de la facture. Un clic sur le bouton "Restaure" et la macro va supprimer la feuille "Facture", recopier la feuille "Modèle" et la renommer en "Facture".

VB:
Sub EffaceDonnées()
    Dim wsSource As Worksheet
    Dim wsDestination As Worksheet

    Set wsSource = ThisWorkbook.Sheets("Modèle")
    Set wsDestination = ThisWorkbook.Sheets("Facture")

    ' Copier la feuille source avant la feuille de destination
    wsSource.Copy Before:=wsDestination

    ' Supprimer la feuille "Facture" existante
    Application.DisplayAlerts = False ' Désactiver les alertes
    wsDestination.Delete
    Application.DisplayAlerts = True ' Réactiver les alertes

    ' Renommer la nouvelle feuille copiée en "Facture"
    With Sheets(1)
        .Name = "Facture"
        .Visible = True
        .Activate
    End With
  
End Sub
Bonjour,
je suis désolé de vous importuner, mais j'espère obtenir votre aide.
J'aimerais obtenir le même code VBA pour le bouton "RESTAURE" dans le classeur "TEST" que celui que vous m'avez suggéré pour le classeur "STOCK".
J'ai essayé plusieurs fois, mais je n'y arrive pas.
Je vous remercie d'avance
 

Pièces jointes

  • TEST .xlsm
    916.5 KB · Affichages: 3

Franc58

XLDnaute Occasionnel
Comme l'onglet "Facture" n'est plus à la même position, cela pose problème. J'ai donc modifié la macro pour en tenir compte. Il y avait 4 macros portant le même nom avec des codes différents pour effacer la facture, j'en ai donc supprimé 3 pour éviter toute confusion.
 

Pièces jointes

  • TEST .xlsm
    933.1 KB · Affichages: 5

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan