Excel oem

Salut

est ce que possible proteger mon fichier excel pour le faire fonctionner sur un seul pc si change le pc ne fonctionne pas

comme les logiciels qui marche sur un ou deux pc OEM

bonjour,

oui c'est possible via macro.

par exemple, se baser sur des données propres au pc (nom, ....) et tester ce nom dans la macro.

Donnes moi un ex svp

bonsoir

par exemple

Private Sub Workbook_Open()
'on ferme le classeur si le nom du PC n'est pas PC0405 ou s'il n'a pas 2 processors
    If Not (Environ("computername") = "PC0405" And Environ("Number_of_processors") = 2) Then
        ThisWorkbook.Saved = True
        ThisWorkbook.Close
    End If
End Sub

note que cette procédure n'offre pas de garantie à 100%

Merci

Est ce que possible pour faire ça sans utiliser le macro vba

Deuxiement

On peut activer le macro desactiver automatiquement par vba programmation dans worksheet open

sans activer le manuallement

Bonjour,

Oui la macro est indispensable.

La macro ne peut pas s'activer automatiquement (a minima la première fois).

Ce qui fait qu'il faut aussi mettre toutes les feuilles en xlVeryHidden et protéger aussi la macro par mot de passe. Sinon ... à l'ouverture sans activation macro l'utilisateur aura accès aux données.

Je pense qu'il est toutefois possible de ne pas protéger la macro si dans le xlVeryHidden on ferme bien tout de suite le fichier comme le propose H2so4

salut

1 je ne comprend xlveryhidden expliq moi par ex

2 tu sais pourquoi je veux activer le macro auto pour utiliser le fichier excel sur un seul pc si la feuil excel ne contient des macro seulement des calculs est ce que on peut faire ça c ta dire feuil de calcul ne contient pas de programmation par macro et marche sur un pc seulement .

Bonjour

Déclencher la fermeture du classeur nécessite du code.

Éventuellement il peut y avoir un code d'installation qui mettrait une info dans la base de registre ou un dossier particulier mais je doute qu'on puisse s'assurer de sa présence uniquement par formule...

salut

appliquer qu'est ce que tu as dit sur cet ex

je veux utiliser cet ex sur un pc seulement et mon idée dit il faut utiliser le macro et bien sur activer le macro auto

10ex.xlsx (8.93 Ko)

Hello !

Un esprit aussi tordu que le mien ne peut laisser passer un tel défi !

salut

Un exemple n'a aucun sens donnes moi le code de vba

Bnjour,

lembmc a écrit :

appliquer qu'est ce que tu as dit sur cet ex

j'ai répondu à ta demande ...

Ah, tu veux aussi la recette de cuisine ? ok ... à suivre en détail !

Prêt ? partez ...

1- la macro doit être protégée = indispensable sinon l'utilisateur pourra modifier les paramètres !

2- le principe est exactement celui exposé par h2so4, et c'est du "non-dilué" ! à savoir on exploitera ENVIRON... ha oui mais quels paramètres au juste ? hé bien ceux que l'on veut dans la liste suivante !!

8environ.xlsm (16.04 Ko)

3- on en fait un choix pertinent que l'on met dans un onglet appelé _param comme ici

capture d ecran 105

... à suivre ...

... je reprends ...

la première ligne de cet onglet comporte en A1 "initialisation ?" et B1 doit rester vierge

Le principe de fonctionnement est qu'à la première connexion, la cellule B1 se mette à "ok" et les lignes soient renseignées des valeurs propres au poste/utilisateur

4- on crée aussi un onglet _accueil qui lui seul restera visible (il en faut bien un)

5- la macro est alors la suivante, à mettre dans ThisWorkBook

Option Explicit

Private Sub Workbook_Open()
Dim ws As Worksheet
Dim ligne%
Dim ok As Boolean
    With Sheets("_param")
        If .Cells(1, 2) = "ok" Then
            ok = True
            For ligne = 2 To .[A1].End(xlDown).Row
                If .Cells(ligne, 2) <> Environ(.Cells(ligne, 1)) Then ok = False
            Next
            If Not ok Then
                MsgBox "Vous n'êtes pas autorisé à travailler sur ce fichier !"
                ThisWorkbook.Saved = True
                ThisWorkbook.Close
            End If
        Else
            For ligne = 2 To .[A1].End(xlDown).Row
                .Cells(ligne, 2) = Environ(.Cells(ligne, 1))
            Next
            .Cells(1, 2) = "ok"
        End If
    End With
    For Each ws In Worksheets
        If ws.Name <> "_param" Then ws.Visible = True
    Next
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) 'masque toutes les feuilles avant de fermer
Dim ws As Worksheet
    Sheets("_accueil").Activate
    For Each ws In Worksheets
        If ws.Name <> "_accueil" Then ws.Visible = xlVeryHidden
    Next
End Sub

on peut changer les noms d'onglet _accueil et _param à condition des les changer aussi dans la macro

merci Steelson

J'ai aimé qu'est ce que tu as " dit tu veux aussi la recette de cuisine"

Je vais l'essayer appliquer cet exemple

Rechercher des sujets similaires à "oem"