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 :

Interaction entre plusieurs fichiers Excel présents dans le même répertoire mais ouverts sur différents PC


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut Interaction entre plusieurs fichiers Excel présents dans le même répertoire mais ouverts sur différents PC
    Bonjour à tous,

    Je me présente jeune apprenti développeur, j'ai appris le VBA grâce à des forum comme celui-ci grâce auxquels j'ai tenu 1 an sans poser de question , donc MERCI à tous ceux qui font vivre ce genre de lieu !


    Mon problème étant expliqué dans le titre, il ne manque que le contexte:

    Je développe actuellement une application relativement grosse pour mon entreprise, l'une des partie de cette application consiste à utiliser un fichier excel en même temps à plusieurs, j'ai contourné le problème en créant à chaque ouverture un fichier personnel "fantome" copie du fichier principal.
    A chaque fermeture de son fichier perso, l'original repère les différence entre lui même et le fantome puis se met à jour. je n'ai pas ré-inventer la roue, je sais bien que je ne suis pas le premier à faire ça, mais j'en suis tout de même content car ça marche plutôt bien \o/ .

    Cependant, mes supérieurs veulent que lorsque deux (ou 3 ou plus) personnes utilisent ces fichier, chacun soit avertit en temps réel sur quel "ligne" du fichier excel quelqu'un travail.
    Pour ce faire, j'ai décidé de changer la couleur des lignes concerné, exemple :

    lorsque mr.dupont travail sur la ligne 64, alors mlle.beaumont et mr.fred voit la ligne 64 de leurs propres fichier s'illuminée en bleu.

    problème : le pc m'indique "l'indice n'appartient pas à la sélection" lorsque je lui demande de changer la couleur de la ligne 64 d'un utilisateur

    j'ai tenté de désactive la lecture seule, par le Shell et autre, mais même dans ce cas, ça indique la même chose..

    (ps : mon code actuel fonctionne lorsque les fichiers sont tous sur le même PC)


    (ps2: je suis au courant qu'en réseau, access est fait pour ça alors que pas excel, mais j'ai débuté ce projet il y à plus d'un an avec 0 connaissances en VBA et pas de cahier des charges, il est un peu tard pour changer mon système, même si je pense qu'une fois que tout fonctionnera, j'essayerai de l'optimiser et pourquoi pas utiliser Access à ce moment la....)


    Merci pour le temps que vous m'accordez !


    Bout de code :

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ''''''''''''''''''''''''''''''''''''''''''''''fonction detection et changement de couleur
    
    repere = 0
    file = Dir(ThisWorkbook.Path & "\Application*") 'tout les fichier fantome commence par "Application"
    Do While file <> ""  'Jusqu'à ce que la recherche soit vide
      
      If file <> ActiveWorkbook.Name Then
      
        
         nomfeuille = ActiveWorkbook.ActiveSheet.Name
         casecouleur = Sheets(nomfeuille).Range("EC" & ActiveCell.Row & ":EC" & ActiveCell.Row)
         Workbooks(file).Sheets(nomfeuille).Cells(casecouleur, 1).EntireRow.Font.Color = RGB(0, 255, 255)    ' l'erreur se produit ici
        
        End If
        
      file = Dir                             'Fichier suivant
      repere = repere + 1
            
    
        
    Loop

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour,

    La collection Workbooks contient tous les classeurs ouvert par l'application excel courante , comment gère tu l'ouverture de tous les fichiers fantômes (en particuliers les fichiers des autres utilisateurs .)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut
    Bonjour, merci de me répondre.

    lorsqu'un utilisateur veut acceder au fichier, le fichier s'ouvre, lui demande son nom et fais cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Chemin = ActiveWorkbook.Path & "\"
    Fich = "Application_" & TextBox1.Value & ".xlsm"                 'fichier fantome
    ActiveWorkbook.SaveAs Chemin & Fich
    Workbooks.Open Filename:=Chemin & "\" & Fich
    Workbooks("fichierprincipal.xlsm").Close False 'sans sauvegarde (True si sauvegarde)
    ces fichiers sont supprimer une fois qu'on les fermes.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    Excel n'est pas une application en réseau, il est ouvert indépendamment des autres PC
    et il n'y a donc aucun moyen de savoir ce qu'il se passe sur d'autres ordinateurs !
    Il dispose d'un mode partagé mais qui bride beaucoup de ses fonctionnalités comme par exemple les codes VBA …

    Tout ceci est pourtant bien connu, jamais une ligne n'aurait dû avoir été codée en VBA Excel pour ce projet !

    En persistant dans cette voie, il faudrait monter un fichier externe indiquant qui fait quoi et devant être scruté
    par évènement par exemple lors du changement de la cellule active, bref de la bien belle usine à gaz de type Tchernobyl ‼

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut
    Bonsoir,

    D'accord, merci beaucoup! je commençais à m'en douter un peu. Mon programme est déjà une usine à gaz malheureusement, cependant elle est plutôt performante je trouve...Je suis surtout presser de la rendre fonctionnel à 100% et de tout refaire via access.

    Cordialement

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/08/2017, 16h55
  2. Réponses: 3
    Dernier message: 19/08/2014, 14h41
  3. Recherche entre plusieurs fichiers excel
    Par Thomas31000 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/05/2013, 14h52
  4. Réponses: 1
    Dernier message: 21/07/2012, 11h11
  5. Réponses: 1
    Dernier message: 11/02/2011, 14h14

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