IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Bug macro en fichier partagé


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2022
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Bug macro en fichier partagé
    Bonjour,

    Je travaille actuellement sur un fichier avec une macro. Tout fonctionnait parfaitement cependant depuis 3 mois le fichier fonctionne en local mais dès qu'il est déposé et ouvert en tant que fichier partagé, il fonctionne lors de la première ouverture mais se crash automatiquement ensuite. J'ai regardé dans la macro mais rien n'a été modifié pourtant cela plante quand même. C'est un fichier confidentiel que je ne peux donc pas partager ici mais auriez-vous ne serait-ce qu'une idée du problème ?

    Je vous remercie d'avance pour vos réponses.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 383
    Points : 659
    Points
    659
    Par défaut
    Bonjour,

    Le fichier se crashe après une action particulière, genre exécution d'une macro ?
    Si oui, il faudrait tester la macro qui fait crasher le fichier en mettant pourquoi pas des points d'arrêts pour cibler exactement la partie du code qui pose problème.
    Une fois identifiée, alors on peut t'aider à creuser, pour l'instant, on manque d'éléments.
    Demain, je vais commencer par m'acheter des lunettes. Et après, je verrai bien.

  3. #3
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous,

    Concernant les fichiers partagés les plantages de fichiers sont malheureusement des problèmes souvent rencontrés. J'ai personnellement pesté contre ces fichiers qui fonctionne puis un jour ne fonctionne plus sans que l'on sache trop pourquoi.

    Pour moi j'ai testé 3 solutions,

    - la première c'est de concevoir une macro qui a chaque modif ou fermeture de fichier enregistre dans un fichier de sauvegarde les actions commises. (Valable si peu d'acteurs 2-3)
    - la suivante est qu'en fin de journée reconstruire un fichier neuf avec les données un peu fastidieux mais fonctionne assez bien
    - la dernière est la plus sûre, plus de bug, c'est de passé par access. Access gère très bien le multiutilisateur contrairement à Excel. L'inconvénient c'est qu'il faut vraiment s'investir dedans, obligatoire si plus de 10 utilisateurs simultanés.

    Une chose peut être utilisée c'est l'ouverture en mode "Read Only". En effet certains utilisateurs n'ont qu'un besoin de consultation, ceux-là doivent ouvrir qu'en mode Read Only sans gêner ceux qui font des modifs dans le fichier Excel.
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  4. #4
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2022
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Oui il se crashe à l'exécution d'une macro mais seulement quand il est sur le réseau (sharepoint), genre quand je fais une extraction ou quand je met à jour avec un fichier externe, le fichier ne veut plus s'ouvrir et fait carrément fermer les autres excel ouvert.

    Ca marche merci je vais tester vos solutions.

  5. #5
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2022
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour, quand je lance la macro voici le message que cela me met. Je n'arrive pas à comprendre pourquoi cela me fait ça.


    Nom : Capture.PNG
Affichages : 822
Taille : 12,8 Ko

  6. #6
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous

    Pour rendre la croix invalide j'utilise ce type de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
    If CloseMode = vbFormControlMenu Then
    MsgBox "Vous ne pouvez pas utiliser ce bouton de fermeture." & Chr(10) _
    & "Pour fermer cette boîte de dialogue, veuillez utiliser le bouton Valider"
    Cancel = True
    End If
     
    End Sub
    Ce code n'est pas de moi je l'ai trouvé ici

    https://forum.excel-pratique.com/exc...rm-t28434.html

    Je viens de retester et cela fonctionne toujours aussi bien

    Cela me semble plus simple que ton code sans vouloir te vexer.
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  7. #7
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 947
    Points : 4 058
    Points
    4 058
    Par défaut
    Citation Envoyé par jkkkk Voir le message
    Bonjour, quand je lance la macro voici le message que cela me met. Je n'arrive pas à comprendre pourquoi cela me fait ça.
    Nom : Capture.PNG
Affichages : 822
Taille : 12,8 Ko
    Bonjour,
    C'est normal : FindWindow, SetWindow, GetWindow, sont des API qui doivent être déclarées dans un module.
    Pour supprimer la croix d'un formulaire (UserForm) il faut procéder ainsi :

    1) Dans un module classique déclarer les API (ici compatible Excel 32 ou 64 bits en théorie (je n'ai pas testé en 64 bits)) :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
    #If Win64 Then
    Declare PtrSafe Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
    Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
    #Else
    Declare PtrSafe Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
    Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
    #End If

    2) Dans le UserForm concerné j'ajoute la demande de suppression de la croix à l'initialisation du formulaire :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Dim hwnd As LongPtr
    hwnd = FindWindow("ThunderDFrame", Me.Caption)
    SetWindowLongPtr hwnd, -16, GetWindowLongPtr(hwnd, -16) And &HFFF7FFFF
    End Sub

    3) lors de l'appel du formulaire, il n'a rien de particulier à faire, la croix est supprimée automatiquement :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
    UserForm1.Show
    MsgBox "fin du traitement"
    End Sub



    Concernant les fichiers partagés par plusieurs utilisateurs :
    Effectivement Excel plante souvent avec les fichiers partagés, c'est pourquoi je préfère avoir un fichier qui sera commun mais en lecture seule (c'est plus sûr), les données proviendront d'une base Access (et y seront enregistrés les ajouts, modifications, suppression).
    Une gestion des utilisateurs habilités est possible. Ainsi qu'une traçabilité.
    J'ai rédigé une documentation sur ce sujet qui donne toutes les fonctions génétiques nécessaires pour vous faire gagner du temps :
    https://laurent-ott.developpez.com/t...chier_partage/

    Bonne programmation.

Discussions similaires

  1. [XL-2007] Macro sur Fichier Excel partage
    Par ropineau dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/06/2009, 16h25
  2. [E-97] macro pour déprotéger une feuille (fichier partagé)
    Par mart159 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2008, 08h09
  3. Pb utilisation fichier partagé et Macro VBA
    Par ISABO95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/07/2008, 16h53
  4. [VBA-E] Probleme macro suite à fichier partagé
    Par wice33 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/06/2006, 09h13
  5. [VBA-E]macro fichier protégé xsl copie de fichiers partagés
    Par matou_aouh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/04/2006, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo