partagé un classeur vba

nina71287

XLDnaute Occasionnel
bonjour,

j'ai vraiment besoin d'aide j'ai developpé un petit outil sur excel en vBA qui va etre utilisé par une 20taine de personne et la je viens de me rendre compte que l'on ne peut aparament pas partagé un classeur avec macro. j'ai lu quelques part que l'on pouvait mettre les macros dans un autre classeur mais j'ai pas du tout compris en quoi ca consitait.Si quelqu'un a une piste ca m'aiderait grandement

PS: je ne peux pas déposer mon classeur car compréssé il fait 170ko si quelqu'un sait comment je peux le deposer merci d'avance bonne soirée
 

JONEY76

XLDnaute Occasionnel
Re : partagé un classeur vba

Je pense que tu dois créer des macros complémentaires mais je ne suis pas assez caler sur ce sujet,

Par contre je serai intéressé de savoir comment partager proprement un classeur sans passser par la lecture seule.

Il existe une mise en réseau d'un fichier et création de serveur sur la version 2007
 

nina71287

XLDnaute Occasionnel
Re : partagé un classeur vba

Aprés plusieurs tests ma premiere macro et plus particulierement mon bouton valider ne marche pas mais si je lance directement la macro employés la ca marche. mon code marche quand le fichier n'est pas partagé, est qu'il y a un langage different à utiliser?

Option Explicit
Const T As String = "Bienvenue"
'Convention des noms !!!
'Cmd = CommandButton
'Txb = TextBox
'Cbx = CheckBox
Private Sub Cmd_sortie_CLICK_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
ThisWorkbook.Activate
Dim WS As Worksheet
With Me
.Caption = T
.Txb_Pwd_Util.PasswordChar = "*"
End With

'For Each WS In Worksheets
'If WS.Name <> "Interface" Then
'WS.Visible = xlSheetVeryHidden
' End If
'Next
UserForm1.Lst_id.RowSource = "MDP!A2:A25"
End Sub
Private Sub UserForm_Activate()
Me.Lst_id.SetFocus
End Sub
Public Sub Cmd_Ok_Btn_Click()
Dim Rech As Range
Dim monparametre As Byte
Static TentativePW As Byte, TentativeID As Byte

Sheets("parametre").Range("A6").Value = Me.Lst_id

If Lst_id = Empty Then End
With ThisWorkbook.Worksheets("MDP").Range("a1:a500")
Set Rech = .Range("users").Find(Lst_id, LookIn:=xlValues, lookat:=xlWhole)
If Not Rech Is Nothing Then

If Txb_Pwd_Util = Rech.Offset(0, 1) Then

If Me.Cbx_Change_PW = True Then
MaSecondeMacro Me.Lst_id
Else
monparametre = Rech.Offset(0, 2)
If monparametre = 1 Then
Accueil1.Show
Unload Me
ElseIf monparametre = 3 Then
Employés.Show
Unload Me
End If
End If
Else
TentativePW = TentativePW + 1
If TentativePW > 3 Then ThisWorkbook.Close 0
MsgBox "Mot de passe invalide, Tentative N° " & TentativePW & " Sur 3", vbCritical, T
With Me.Txb_Pwd_Util
.Value = ""
.SetFocus
End With


End If
Else
TentativeID = TentativeID + 1
If TentativeID > 3 Then ThisWorkbook.Close 0
MsgBox "Utilisateur inconnu, , Tentative N° " & TentativeID & " Sur 3", vbCritical, T


End If
End With

End Sub

Private Sub MaSecondeMacro(User As String)
Dim Message As Byte
Dim Rech As Range

Set Rech = Range("Users").Find(Lst_id, LookIn:=xlValues, lookat:=xlWhole)


If Me.Cbx_Change_PW = True Then
ChangePW User, Rech
Exit Sub
End If

If (Now - Rech.Offset(0, 3)) > 30 Then

Message = MsgBox("Il apparait que votre password arrive à expiration" & vbCrLf & _
"Voulez vous changer ? ", vbQuestion + vbYesNo, T)

If Message = vbYes Then
ChangePW User, Rech
End If

End If

End Sub
Private Sub ChangePW(User As String, Rech As Range)
With UserForm2
.LblUser = User 'J'utilise des Labels pour passer des arguments
.LblCell.Caption = Rech.Offset(0, 1).Address 'Idem mais sur label caché
.Show
End With
End Sub
Private Sub Cmd_Exit_Click()
Unload Me
End Sub

merci pour votre aide
 

JONEY76

XLDnaute Occasionnel
Re : partagé un classeur vba

Code:
Option Explicit
Const T As String = "Bienvenue"
'Convention des noms !!!
'Cmd = CommandButton
'Txb = TextBox
'Cbx = CheckBox


Private Sub Cmd_sortie_CLICK_Click()
Unload Me
End Sub


Private Sub UserForm_Initialize()
ThisWorkbook.Activate
Dim WS As Worksheet
With Me
.Caption = T
.Txb_Pwd_Util.PasswordChar = "*"
End With

'For Each WS In Worksheets
'If WS.Name <> "Interface" Then
'WS.Visible = xlSheetVeryHidden
' End If
'Next
UserForm1.Lst_id.RowSource = "MDP!A2:A25"
End Sub




Private Sub UserForm_Activate()
Me.Lst_id.SetFocus
End Sub




Public Sub Cmd_Ok_Btn_Click()
Dim Rech As Range
Dim monparametre As Byte
Static TentativePW As Byte, TentativeID As Byte

Sheets("parametre").Range("A6").Value = Me.Lst_id

If Lst_id = Empty Then End
With ThisWorkbook.Worksheets("MDP").Range("a1:a500")
Set Rech = .Range("users").Find(Lst_id, LookIn:=xlValues, lookat:=xlWhole)
If Not Rech Is Nothing Then

If Txb_Pwd_Util = Rech.Offset(0, 1) Then

If Me.Cbx_Change_PW = True Then
MaSecondeMacro Me.Lst_id
Else
monparametre = Rech.Offset(0, 2)
If monparametre = 1 Then
Accueil1.Show
Unload Me
ElseIf monparametre = 3 Then
Employés.Show
Unload Me
End If
End If
Else
TentativePW = TentativePW + 1
If TentativePW > 3 Then ThisWorkbook.Close 0
MsgBox "Mot de passe invalide, Tentative N° " & TentativePW & " Sur 3", vbCritical, T
With Me.Txb_Pwd_Util
.Value = ""
.SetFocus
End With
End If
Else
TentativeID = TentativeID + 1
If TentativeID > 3 Then ThisWorkbook.Close 0
MsgBox "Utilisateur inconnu, , Tentative N° " & TentativeID & " Sur 3", vbCritical, T

End If
End With
End Sub






Private Sub MaSecondeMacro(User As String)
Dim Message As Byte
Dim Rech As Range

Set Rech = Range("Users").Find(Lst_id, LookIn:=xlValues, lookat:=xlWhole)


If Me.Cbx_Change_PW = True Then
ChangePW User, Rech
Exit Sub
End If

If (Now - Rech.Offset(0, 3)) > 30 Then

Message = MsgBox("Il apparait que votre password arrive à expiration" & vbCrLf & _
"Voulez vous changer ? ", vbQuestion + vbYesNo, T)

If Message = vbYes Then
ChangePW User, Rech
End If
End If
End Sub





Private Sub ChangePW(User As String, Rech As Range)
With UserForm2
.LblUser = User 'J'utilise des Labels pour passer des arguments
.LblCell.Caption = Rech.Offset(0, 1).Address 'Idem mais sur label caché
.Show
End With
End Sub
Private Sub Cmd_Exit_Click()
Unload Me
End Sub
 

nina71287

XLDnaute Occasionnel
Re : partagé un classeur vba

bonjour,

ci joint un exemple de ce que fait mon appli j'ai simplifié en enlevant le formulaire mot de passe et j'ai remplacé par l'entrée d'un login.

Probléme elle ne marche que pour un utilisateur à la fois!:(

j'aurais besoin d'aide svp pour que plusieurs utilisateurs puissent saisir des données dans ce type de formulaire en meme temps et que toutes les données saisies des utilisateurs soient entrées dans la feuille previsionnel je suppose que je dois partager le fichier mais aprés je ne sais pas comment faire?

Merci de votre aide

Bonne journée:)
 

Pièces jointes

  • demo excel download.xlsm
    38.2 KB · Affichages: 179

nina71287

XLDnaute Occasionnel
Re : partagé un classeur vba

re:

je dois resoudre ce probleme avant jeudi :(quelques pistes m'aiderait vraiment

est ce que mon probleme a une solution ou c'est impossible?
est ce qu'il vous manque des infos pour repondre à mon probleme?

merci bonne journée
 

nina71287

XLDnaute Occasionnel
Re : besoin d'une personne pour tester classeur partagé vba

j'insiste dsl:eek:!

ci joint le fichier exemple partagé
Cijoint.fr - Service gratuit de dépôt de fichiers

impossible de le tester par deux utilisateurs en reseau je ne suis pas au travail.


serait il possible qu'une ame charitable qui a acces à un reseau teste pour moi avec un collègue si mon userform en multiultilisateurs fonctionne en meme temps.

Afin que je puisse voir si il ya des bugs, je sais que j'en demande bcp svp merci d'avance
 

Guiv

XLDnaute Occasionnel
Re : partagé un classeur vba

Bonjour,
Je ne suis pas sûr d'avoir bien compris ton problème, mais j'ai quelques fichiers qui fonctionnent sur un petit réseau (6 PC), et si le fichier est déjà ouvert par un utilisateur, les autres ne peuvent y accéder qu'en lecture seule, donc impossible d'y saisir quoi que ce soit tant que le 1er utilisateur ne l'a pas fermé. Ce qui semble logique, sinon un utilisateur pourrait en tant réel défaire ce que l'autre fait... ce serait le bronx dans les fichiers!
Je ne pense pas que ce soit contournable...
Désolé, j'aurais préféré t'apporter une solution.
Cordialement,
Guiv
 

nina71287

XLDnaute Occasionnel
Re : partagé un classeur vba

merci pr ta reponse.

il me semblait qu'avec la version 2007 et l'option partage le classeur sur un fichier deposer sur un reseau partagé on pouvait le faire mais n'ayant pas accés à un reseau avt jeudi je ne peux pas tester. certains personnes sur internet disent que c'est possible que si deux utilisateurs utilisrent le fichier excel en meme temps alors les données du deuxieme vont s'incrémenter à la ligne suivante.

moi ce que j'ai besoin de savoir si quelqu'un a deja mis ca en place et si ca marche car a mon boulot je ne peux pas utiliser access je n'ai que excel...:(
 

nina71287

XLDnaute Occasionnel
Re : partagé un classeur vba

ci joint les infos que j'ai trouvé a ce sujet:

Autoriser plusieurs utilisateurs à modifier simultanément le même classeur
Si vous avez un classeur dans lequel vous souhaitez autoriser plusieurs utilisateurs à ajouter ou à modifier des données simultanément, vous pouvez définir et l’enregistrer en tant que classeur « partagé » puis le rendre accessible à partir d’un partage réseau (et d’un serveur Web).


Utilisez la fonction Partager le classeur si :

Vous souhaitez autoriser la modification simultanée des données d’un même classeur par plusieurs utilisateurs et la modification des données d’origine ne vous pose pas de problème, ni les ajouts et les suppressions.
Vous utilisez un partage réseau sur lequel stocker votre classeur et auquel les utilisateurs ont accès.
Remarque Il est impossible à plusieurs utilisateurs de modifier simultanément un classeur partagé qui est stocké sur un site Windows SharePoint Services 3.0. Si vous souhaitez stocker votre classeur sur un site Windows SharePoint Services 3.0, vous devez le faire uniquement une fois le travail de collaboration terminé sur le partage.

Vous souhaitez conserver un enregistrement des modifications apportées dans le classeur.
Vous n’envisagez pas de modifier les fonctionnalités suivantes, qui ne peuvent pas être modifiées une fois le classeur partagé : cellules fusionnées, mises en forme conditionnelles, validation de données, graphiques, images, objets (y compris les objets dessins), liens hypertexte, scénarios, plans, sous-totaux, tableaux de données, rapports de tableau croisé dynamique, protection de classeur et de feuille de calcul, macros.

Important L’enregistrement d’un classeur partagé Office Excel 2007 dans un format de fichier d’une version antérieure met fin au partage du classeur et l’historique des révisions qui documente les conflits et les résolutions est perdu. Si vous devez enregistrer le classeur dans le format d’une version antérieure, vous pouvez enregistrer tout d’abord une copie de l’historique des révisions.

En tant que propriétaire du classeur, vous pouvez le préparer au partage en saisissant les données et en leur appliquant une mise en forme. Lorsque vous avez terminé, cliquez sur Partager le classeur dans le groupe Modifications de l’onglet Révision, sélectionnez les options de votre choix, puis enregistrez le classeur sur un nouveau partage (et non sur un serveur Web) accessible aux utilisateurs prévus. Vous pouvez également cliquer sur Protéger et partager le classeur dans le groupe Modifications de l’onglet Révision pour empêcher les autres utilisateurs de désactiver le suivi des modifications dans le classeur.


À chaque fois que vous enregistrez le classeur partagé, les modifications que les autres utilisateurs ont enregistrées depuis que vous avez enregistré le classeur partagé vous sont signalées. Si vous souhaitez conserver le classeur partagé ouvert pour suivre l’avancement, Excel peut mettre automatiquement à jour votre classeur à partir des modifications, aux intervalles que vous spécifiez, et vous pouvez ensuite enregistrer ou non le classeur.

Lorsque vous enregistrez des modifications dans un classeur partagé, une autre personne, également en train de modifier ce classeur a peut-être enregistré des modifications dans les mêmes cellules. Dans ce cas, les modifications sont en conflit et une boîte de dialogue de résolution de conflit s’affiche afin que vous puissiez choisir les modifications à conserver.

Pour plus d’informations sur la configuration et l’utilisation de classeurs partagés, voir Utiliser un classeur partagé pour collaborer.
 

joss56

XLDnaute Accro
Re : partagé un classeur vba

Bonjour Nina, le forum,

Tu peux peut-être essayer de créer ta base sur un serveur et de développer une application client que tu déploies sur chaque poste. Ainsi tu évites les soucis du classeur partagé.
A voir...

Jocelyn
 

Discussions similaires

Réponses
1
Affichages
361
Compte Supprimé 979
C
Réponses
9
Affichages
2 K
Compte Supprimé 979
C
Réponses
3
Affichages
892

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87