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 :

Annulation de procédure lors d'un transfert de données vers un fichier ouvert


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Chargé de pilotage Opé
    Inscrit en
    Décembre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de pilotage Opé
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2024
    Messages : 8
    Par défaut Annulation de procédure lors d'un transfert de données vers un fichier ouvert
    Bonjour à tous
    J'ai (encore) besoin de votre aide...!

    C'est sûrement un cas déjà rencontré par certains d'entre vous
    J'ai cherché sur le forum mais je n'ai rien trouvé


    J'ai une macro qui envoie des données d'un classeur à un autre qui fonctionne très bien si le classeur de destination est fermé ou s'il est ouvert sur mon ordinateur

    Les problèmes que je rencontre sont les suivants :
    1-Quand je lance ma macro mais que le classeur de destination est ouvert par un autre utilisateur sur son ordinateur, les données ne sont pas transférées
    2-Conséquence du cas 1 ; Les données sont considérées comme transmises puisque ma macro tourne quand même et que mon argument de suivi de transmissions (VRAI ou FAUX) a tourné aussi

    Je cherche donc à avoir une ligne de code pour stopper la macro si le fichier de destination est ouvert par un autre utilisateur

    Ci-dessous mon code actuel pour ouvrir le fichier
    Merci pour vos réponses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim monfichier As String            
    monfichier = ThisWorkbook.Name
     
    Dim fichier_destination As String
    fichier_destination = "Exemple.xlsm"
     
    Dim chemin As String
    chemin = "\\Exemple\Exemple\Exemple" & "/" & fichier_destination
     
    Dim onglet_destination As String
    onglet_destination = "Exempleonglet"
     
    Workbooks.Open chemin
    Workbooks(fichier_destination).Activate

  2. #2
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 000
    Par défaut
    Hello,

    ça devrait faire l'affaire mais à vérifier car je n'ai pas d'environnement réseau actuellement
    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Option Explicit
     
    Sub Test_Fichier_Ouvert()
     
        Dim monfichier As String
        monfichier = ThisWorkbook.Name
     
        Dim fichier_destination As String
        fichier_destination = "Exemple.xlsm"
     
        Dim chemin As String
        chemin = "\\Exemple\Exemple\Exemple" & "/" & fichier_destination
     
        Dim onglet_destination As String
        onglet_destination = "Exempleonglet"
     
    '---------------
        If Fichier_Ouvert(chemin) Then
            Exit Sub
        Else
            Workbooks.Open chemin
            Workbooks(fichier_destination).Activate
        End If
    '-------------------
     
    End Sub
     
    Function Fichier_Ouvert(Nom_Fichier As String)
     
        Dim Num_Fichier As Integer, Num_Erreur As Integer
        Fichier_Ouvert = False
        Num_Fichier = FreeFile()
     
        On Error Resume Next
        Open Nom_Fichier For Input Lock Read As #Num_Fichier
        Num_Erreur = Err
        Close Num_Fichier
     
        If Num_Erreur <> 0 Then Fichier_Ouvert = True
     
        On Error GoTo 0
     
    End Function
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  3. #3
    Membre habitué
    Homme Profil pro
    Chargé de pilotage Opé
    Inscrit en
    Décembre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de pilotage Opé
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2024
    Messages : 8
    Par défaut
    Hello "Nain porte koi" !...

    Merci beaucoup pour ton aide, j'ai ajouté tes lignes de codes aux miennes et tout marche à merveille !! ✨
    J'ai également testé avec les fichiers ouverts sur d'autres PC et ça fonctionne

    J'ai ajouté un petit MsgBox pour prévenir que la transmission est annulée et le tour est joué

    Encore merci, sujet résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transfert de donnés d'un fichier excel vers une table Access
    Par haganidjamel dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/12/2018, 10h59
  2. [PPT-2003] transfert de donné entre deux fichier du meme repertoire
    Par yvespi dans le forum VBA PowerPoint
    Réponses: 8
    Dernier message: 04/05/2010, 23h01
  3. Erreur charset lors d'un transfert de données
    Par Cyberbob002 dans le forum PostgreSQL
    Réponses: 16
    Dernier message: 29/11/2005, 16h00
  4. Réponses: 16
    Dernier message: 28/11/2005, 20h09
  5. Réponses: 2
    Dernier message: 21/06/2005, 22h18

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