Partager un classeur .xlsm sous excel 2007

Joss0109 Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   -  
Joss0109 Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai créé un classeur excel 2007 avec plusieurs macros.
Ce classeur ce compose principalement de deux feuilles :
- Une consacrée au Menu (avec plusieurs boutons d'action)
- La deuxième sert a stocker toutes les données dans un tableau avec une mise en page conditionnelle
Les boutons d'actions de la 1ere me servent à manipuler le tableau se trouvant sur la deuxième feuille (masquer/afficher des colonnes avec "MDP"... modifier la mise en page du tableau... etc...)

J'ai aujourd'hui 8 personnes sur le réseau susceptibles d'utiliser cette application et de l'alimenter.
-Quand je veux le partager, je rencontre deux problèmes :
- Désactivation des macros !
- il me demande de faire sauter la mise en forme conditionnelle sur mon tableau et de mettre une mise en page "classique" (ce qui massacre mon tableau....)

Si quelqu'un à une solution, ça serait bien !
PS : en vba je suis preneur !!!

Merci a vous

Joss
A voir également:

5 réponses

thev Messages postés 1987 Date d'inscription   Statut Membre Dernière intervention   715
 
Bonjour,

D'abord, le fait de partager le classeur ne désactive pas les macros mais empêche seulement leur modification.

Ensuite, une solution est de ne pas partager le classeur en :
1- le mettant en lecture seule recommandée,
2- gérant une file d'attente d'écriture dès qu'il est demandé de l'alimenter.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

idem pour les MFC, elles ne sont pas incompatibles mais :
Ajout ou modification de mises en forme conditionnelles
Les mises en forme conditionnelles existantes continuent à apparaître lorsque les valeurs des cellules changent, mais vous ne pouvez pas modifier ces mises en forme ni redéfinir les conditions.

eric
0
Joss0109 Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   53
 
Bonjour Messieurs et merci de vos réponses !

Si je ne partage pas le classeur, comment puis-je avoir un fichier qui puisse être alimenté par plusieurs personnes en même temps ? sinon à quoi bon… je ne comprends pas…

Comment gérer la file d’attente ?

D’autre part, voici le message qu’excel me permets quand je souhaite partager, peut-être que ca vous parlera :

« Impossible de partager ce classeur car il contient des tableaux excel ou des nappages XML. Pour partager ce classeur, convertissez les tableaux en plages et supprimez les nappages XML… »

… et il m’indique la procédure pour convertir, et il me fait sauter mes mises en page conditionnelles et je me retrouve avec des tableaux merdiques…
Voilà !

Peut-être avez-vous d’autres éléments de réponse, ça serait sympas !!!
Merci à vous les gars !
Joss
0
thev Messages postés 1987 Date d'inscription   Statut Membre Dernière intervention   715
 
bonjour,

ci-dessous exemple de code pour gérer une file d'attente de 5 secondes en écriture pour un classeur non partagé


Private Sub Workbook_Open()

Application.DisplayAlerts = False
If ThisWorkbook.ReadOnly Then
réponse = MsgBox("Voulez-vous modifier ce fichier ?", vbYesNo + vbDefaultButton2)
If réponse = vbYes Then
Nom_fichier = ThisWorkbook.Path & "\" & ThisWorkbook.Name

'..... contrôle libre accès classeur pour modification sinon attente 5 secondes .......................................
Do While IsWorkBookOpenForWrite(Nom_fichier)
date_fin = DateAdd("s", 5, Now)
Application.Wait date_fin
Loop
'..... lancement nouvelle instance Excel avec ouverture fichier pour modification ....................................
Set xl = New Application
xl.Visible = True
xl.Workbooks.Open fileName:=Nom_fichier, IgnoreReadOnlyRecommended:=True

'..... fermeture instance Excel avec ouverture fichier en lecture seule ....................................
Application.Quit
End If
End If

End Sub

Function IsWorkBookOpenforwrite(ByVal Nom_fichier As String) As Boolean

Dim no_fichier As Long

On Error Resume Next
no_fichier = FreeFile()
Open Nom_fichier For Binary Access Read Lock Read Write As #no_fichier
If Err.Number = 0 Then IsWorkBookOpenforwrite = False _
Else IsWorkBookOpenforwrite = True
Close no_fichier

End Function


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Joss0109 Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   53
 
Merci à toi c'est sympas, je test ca et te tiens au courant !

Bonne soirée
0