Partager un classeur .xlsm sous excel 2007

Joss0109 Messages postés 143 Statut Membre -  
Joss0109 Messages postés 143 Statut Membre -
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

5 réponses

  1. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  3. Joss0109 Messages postés 143 Statut Membre 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
  4. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Joss0109 Messages postés 143 Statut Membre 53
     
    Merci à toi c'est sympas, je test ca et te tiens au courant !

    Bonne soirée
    0