Sauvegarde de données et protection VBA Excel
merehas
-
merehas -
merehas -
Bonjour,
Je suis débutant en VBA Excel et j'aurai besoin d'un coup de pouce...
Je vous présente le projet:
J'ai deux feuilles sur un classeur. La première sert à rentrer des données et calcule des scores ) à parrtir de ces données. Seule les cellules où l'utilisateur entre les données ne sont pas verrouillées.
Sur cette feuille apparait aussi un bouton "Sauvegarder" qui enregistre les données entrées ainsi que les scores calculé sur la deuxième feuille. Cette feuille constituera à terme une sorte de base de données.
Ci dessous le code de ce bouton:
Mes problemes sont les suivants:
1 - Lorsque je rentre de nouvelles données dans la feuille 1, les données et scores précédemment enregistrées via le bouton sont eux aussi transformées, or je souhaite pouvoir les garder
2 - La deuxième feuille doit être protégé en écriture pour les utilisateurs. Seule la macro "bouton de sauvegarde" doit pouvoir créer une nouvelle ligne et inscrire les données à sauvegarder, puis bien sur sauvegarder!!!
Est-ce que quelqu'un à une idée de réponse?
Merci d'avance.
Je suis débutant en VBA Excel et j'aurai besoin d'un coup de pouce...
Je vous présente le projet:
J'ai deux feuilles sur un classeur. La première sert à rentrer des données et calcule des scores ) à parrtir de ces données. Seule les cellules où l'utilisateur entre les données ne sont pas verrouillées.
Sur cette feuille apparait aussi un bouton "Sauvegarder" qui enregistre les données entrées ainsi que les scores calculé sur la deuxième feuille. Cette feuille constituera à terme une sorte de base de données.
Ci dessous le code de ce bouton:
Option Explicit Sub CmdSave_Click() ' CmdSave_Click() copie les résultats entré ainsi que les scores calculés dans le tableau de la feuille 2 puis vide la colonne résultat et sauvegarde le classeur 'Séléction de la première ligne vide à partir de la 6eme ligne Dim k As Integer k = 6 Do While Worksheets(2).Cells(k, 2) <> "" k = k + 1 Loop 'Insertion d'une ligne sur laquelle on va enregistrer les données Sheets("Données Sauvegardées").Select Rows(k).Select Selection.Copy Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'transposition des données d'identification Range("B" & k & ":E" & k).Select Selection.FormulaArray = _ "=TRANSPOSE('Remplissage du Questionnaire'!R1C4:R4C4)" 'transposition des résultats Range("F" & k & ": AO" & k).Select Selection.FormulaArray = _ "=TRANSPOSE('Remplissage du Questionnaire'!R9C3:R44C3)" 'transposition des scores Range("AP" & k & ":AX" & k).Select Selection.FormulaArray = _ "=TRANSPOSE('Remplissage du Questionnaire'!R16C8:R32C8)" 'transposition de l'indice de cohérence Range("AY" & k).Select Selection.FormulaArray = "='Remplissage du Questionnaire'!R11C9" 'transposition de PCS Range("AZ" & k).Select Selection.FormulaArray = _ "='Remplissage du Questionnaire'!R40C8" 'transposition de MCS Range("BA" & k).Select Selection.FormulaArray = _ "='Remplissage du Questionnaire'!R42C8" ThisWorkbook.Save 'Sauvegarde du classeur End Sub
Mes problemes sont les suivants:
1 - Lorsque je rentre de nouvelles données dans la feuille 1, les données et scores précédemment enregistrées via le bouton sont eux aussi transformées, or je souhaite pouvoir les garder
2 - La deuxième feuille doit être protégé en écriture pour les utilisateurs. Seule la macro "bouton de sauvegarde" doit pouvoir créer une nouvelle ligne et inscrire les données à sauvegarder, puis bien sur sauvegarder!!!
Est-ce que quelqu'un à une idée de réponse?
Merci d'avance.
A voir également:
- Sauvegarde de données et protection VBA Excel
- Logiciel de sauvegarde gratuit - Guide
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Sauvegarde des données - Guide
- Si et excel - Guide
4 réponses
Bonjour,
Pour protéger toutes les cellules, le code est :
ActiveSheet.Protect
Avec mot d epasse :
ActiveSheet.Protect ("mot de passe")
Pour déprotéger :
ActiveSheet.UnProtect
Pour déprotéger avec mot de passe :
ActiveSheet.Unprotect ("mot de passe")
Je te conseille par défaut de protéger ton classeur.
A l'ouverture, d'utiliser cette macro :
sub auto-open () ' se déclenche à l'ouverture du classeur
activesheet.unprotect ' enlèves la protection
range(cells(1,1),cells(3,2)).select 'sélectionnes de la cellule A1 à B3 (cells, ligne, colonne)
Selection.Locked = False 'déverrouilles la protection des cellules sélectionnées
activesheet.protect 'tu reprotèges la feuille, les utilisateurs ne peuvent saisir qu'en A1 à B3
end sub
En protégeant par défaut, ca oblige les utilisateurs à activer les macros.
Ainsi, une fois les macros activées, ils ne peuvent saisir que la ou tu le souhaites.
Quant à la sauvegarde, quel type de sauvegarde veux tu? Une sauvegarde du fichier, dans une autre feuille?
Pour protéger toutes les cellules, le code est :
ActiveSheet.Protect
Avec mot d epasse :
ActiveSheet.Protect ("mot de passe")
Pour déprotéger :
ActiveSheet.UnProtect
Pour déprotéger avec mot de passe :
ActiveSheet.Unprotect ("mot de passe")
Je te conseille par défaut de protéger ton classeur.
A l'ouverture, d'utiliser cette macro :
sub auto-open () ' se déclenche à l'ouverture du classeur
activesheet.unprotect ' enlèves la protection
range(cells(1,1),cells(3,2)).select 'sélectionnes de la cellule A1 à B3 (cells, ligne, colonne)
Selection.Locked = False 'déverrouilles la protection des cellules sélectionnées
activesheet.protect 'tu reprotèges la feuille, les utilisateurs ne peuvent saisir qu'en A1 à B3
end sub
En protégeant par défaut, ca oblige les utilisateurs à activer les macros.
Ainsi, une fois les macros activées, ils ne peuvent saisir que la ou tu le souhaites.
Quant à la sauvegarde, quel type de sauvegarde veux tu? Une sauvegarde du fichier, dans une autre feuille?
Merci melanie 1324,
Je vais essayer ce que tu m"as dit pour la protection.
Pour ce qui est de la sauvegarde....
les utilisateurs entreront des données dans certaines cellules de la feuille 1. Sur cette meme feuille, des scores sont calculés (à partir des données saisies).
Je souhaite que lorsque l'uitilisateur clique sur le bouton sauvegarder, la macro liée à ce bouton copie d'une part les données entrées et d'autre part les scores calculés. Puis colle l'ensemble dans le tableau de la feuille 2.
Cette partie est dèjà faite dans le code ci dessus.
Imaginons qu'un utilisateur rentre ses données puis sauvegarde. Jusque là tout va bien.
Mon probleme pour l'instant est que lorsq'un second utilisateur entre ses données puis sauvegarde, la macro crée une ligne sur laquelle sont enregistrées les données de l'utilisateur 2 MAIS les résultats enregistré par l'utilisateur 1 (sur la ligne du dessus) sont aussi changés en ceux de l'utilisateur 2.
Ce qui ne m'avance à rien vu que je souhaite garder les résultats des différents utilisateurs.
J'espère que j'ai été plus compréhensible.
Merci à tout ceux qui se pencheront sur mon probleme.
Je vais essayer ce que tu m"as dit pour la protection.
Pour ce qui est de la sauvegarde....
les utilisateurs entreront des données dans certaines cellules de la feuille 1. Sur cette meme feuille, des scores sont calculés (à partir des données saisies).
Je souhaite que lorsque l'uitilisateur clique sur le bouton sauvegarder, la macro liée à ce bouton copie d'une part les données entrées et d'autre part les scores calculés. Puis colle l'ensemble dans le tableau de la feuille 2.
Cette partie est dèjà faite dans le code ci dessus.
Imaginons qu'un utilisateur rentre ses données puis sauvegarde. Jusque là tout va bien.
Mon probleme pour l'instant est que lorsq'un second utilisateur entre ses données puis sauvegarde, la macro crée une ligne sur laquelle sont enregistrées les données de l'utilisateur 2 MAIS les résultats enregistré par l'utilisateur 1 (sur la ligne du dessus) sont aussi changés en ceux de l'utilisateur 2.
Ce qui ne m'avance à rien vu que je souhaite garder les résultats des différents utilisateurs.
J'espère que j'ai été plus compréhensible.
Merci à tout ceux qui se pencheront sur mon probleme.