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 :

Transférer des données d'un fichier vers un autre (Espace commun) [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut Transférer des données d'un fichier vers un autre (Espace commun)
    Salut le forum

    Je souhaite connecter un fichier à un autre qui se trouve dans un espace commun (OPEN_SPACE).
    Le fichier qui se trouve dans cet espace est toujours non ouvert.
    Le premier fichier qui me permettra de transférer les données s’appellera "Fichier_Depart" (ce fichier se trouvera dans le poste de chaque utilisateur. Il faut noter qu'il y aura beaucoup d'utilisateurs (50)
    Le deuxième qui permettra de stocker les informations issues de Fichier_Depart s'intitulera "Fichier_Arrivés"
    Les données traitées par chaque utilisateur à partir de Fichier_Depart devront être transféré dans Fichier_Arrivés (qui se trouve dans l'espace commun).
    J'aimerai savoir si cela comportera des risques?
    Autrement dit, le faite que chaque utilisateurs après avoir validés ces données à transférer dans l'espace commun ne causera pas de problèmes.
    Tout en sachant que plusieurs utilisateurs peuvent avoir valider au même moment.
    Je profite vous soumettre un code que j'ai essayé de réaliser pour le transfère des données.
    Je constate que y'a erreur lorsque j'exécute le code.
    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
    Private Sub CB_Modifier_Click()
    Dim C As Range
     
        Workbooks.Open "W:\GESTION_VISA_CHEQUE\Fichier_Depart.xlsx"
        With Sheets("BASE_DE_DONNEES")
            If Application.CountIf(.Range("User_Code"), Me.Code_Utilisateur.Value) > 0 Then
                Set C = .Range("User_Code").Find(Me.Code_Utilisateur.Value)
            Else
                Set C = .Range("User_Code").End(xlDown).Offset(1)
                C.Value = Me.Code_Utilisateur.Value ' Code Utilisateur
            End If
            C.Offset(0, 1) = Me.TextBox2 ' Code Exploitant
            C.Offset(0, 2) = Me.TextBox3 ' Nom & Prenom
            C.Offset(0, 3) = Me.TextBox4 ' N° Téléphone
            C.Offset(0, 4) = Me.TextBox5 ' Adresse Mail
            C.Offset(0, 5) = Me.TextBox6 ' Adresse Mail D.A
        End With
        ActiveWorkbook.Save
        ActiveWindow.Close
        Unload Me
    End Sub
    Merci d'avance pour vos conseils et solutions

  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
    bonsoir ,

    d'ou viens cette notion "d'Espace commun" sous Excel ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Je voulais tout simplement dire que Fichier_Arrivés se trouve dans un serveur de dossier (donc accessible par tous les utilisateur). Voici son chemin d'accès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "W:\GESTION_VISA_CHEQUE\Fichier_Depart.xlsx"

  4. #4
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Citation Envoyé par capi81 Voir le message
    J'aimerai savoir si cela comportera des risques?
    Autrement dit, le faite que chaque utilisateurs après avoir validés ces données à transférer dans l'espace commun ne causera pas de problèmes.
    Qu'entends-tu par risque ? Ou par problème ?
    A moins que deux Utilisateurs utilise le programme à la même seconde, tu devrais avoir le temps d'ouvrir ton classeur tier, écrire dedans, et le fermer en sauvegardant.
    D'ailleurs utilise plutôt :
    Le premier paramètre de Workbook.close est SAveChange, si tu le met à "True" ça te permet de fermer et sauvegarder le classeur en même temps.

    Citation Envoyé par capi81 Voir le message
    Je constate que y'a erreur lorsque j'exécute le code.
    Ou se trouve les erreurs ? sur quelles lignes/quelles variables ?

  5. #5
    Invité
    Invité(e)
    Par défaut Bonjour,
    tu peux utiliser ton classeur Excel comme une base de données et faire un traitement avec ADO.
    ça fonctionne même si le fichier est ouvert par un utilisateur c'est immédiat et tous les utilisateur peuvent travaillé en même temps!
    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
    Sub exportDonneeDansCelluleClasseurFerme()
    Dim source As Object
    Dim requete As Object
     
    Dim Fichier As String, Feuille As String, strSQL As String
    Fichier = "C:\Users\RDurupt\Desktop\Condence.xls" 'chemin complet du fichier fermé
    Feuille = "Feuil2" 'Onglet où les données doivent être insérées
    Dim nom As String, prenom As String, age As Integer
    nom = "Titi"
    prenom = "Toto"
    age = 220
     
    Set Cnx = CreateObject("ADODB.Connection")
     
    With Cnx
     
    ' .Provider = "MSDASQL"
    .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
    "DBQ=" & Fichier & "; ReadOnly=False;"
    .Open
    End With
    'Les données doivent être indiquées dans le même ordre que les champs dans la base de données.
     
    strSQL = "INSERT INTO [" & Feuille & "$] (nom, prenom, age) VALUES ( '" & nom & "', '" & prenom & "', " & age & ")" ' (nom, prenom, age)  si le nom des entête sont bien ça dans Excel!
     
    Cnx.Execute strSQL
    strSQL = "update  [" & Feuille & "$] set nom='" & nom & "', prenom='" & prenom & "', age=150 where  nom='" & nom & "';"
    Cnx.Execute strSQL
    Cnx.Close
    Set Cnx = Nothing
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strSQL = "update  [" & Feuille & "$] set TextBox2='" & Me.TextBox2 & "', TextBox3='" & Me.TextBox3 & "', TextBox4='" & Me.TextBox4 &  _ 
    "', TextBox5='" & Me.TextBox5 & "',TextBox6='" & Me.TextBox6 & "' where  Code_Utilisateur='" & Me.Code_Utilisateur.Value & "';"
    Dernière modification par Invité ; 28/08/2014 à 09h30.

  6. #6
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Salut rdurupt

    Merci pour ta solution qui m'intéresse beaucoup.
    Qu'entends-tu par risque ? Ou par problème ?
    J'entend par risque ou problème un dysfonctionnement éventuel qui pourrait subvenir du faite que plusieurs personnes utilisent le fichier et avec possibilité de validation simultanées et que cela ne perturbe le collage des données dans la base.
    Mais je vois que votre solution prend en compte cette préoccupation;ce qui me rassure.
    Ou se trouve les erreurs ? sur quelles lignes/quelles variables ?
    Voici le message d'erreur que je reçois :http://cjoint.com/?DHCkjbuF1CN
    Ensuite la ligne 6 est colorée en jaune comme pour signaler l'erreur à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Application.CountIf(.Range("User_Code"), Me.Code_Utilisateur.Value) > 0 Then
    Comme votre solution n'a rien n'a voir avec mon code, je suggère qu'on se concentre sur le votre et si votre temps vous permet, vous pourrez apprécier l'erreur de mon code.
    A quoi sert ce code et ou dois-je le loger?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strSQL = "update  [" & Feuille & "$] set TextBox2='" & Me.TextBox2 & "', TextBox3='" & Me.TextBox3 & "', TextBox4='" & Me.TextBox4 &  _ 
    "', TextBox5='" & Me.TextBox5 & "',TextBox6='" & Me.TextBox6 & "' where  Code_Utilisateur='" & Me.Code_Utilisateur.Value & "';"

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par capi81 Voir le message
    Salut rdurupt

    Merci pour ta solution qui m'intéresse beaucoup.

    Comme votre solution n'a rien n'a voir avec mon code, je suggère qu'on se concentre sur le votre et si votre temps vous permet, vous pourrez apprécier l'erreur de mon code.
    A quoi sert ce code et ou dois-je le loger?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strSQL = "update  [" & Feuille & "$] set TextBox2='" & Me.TextBox2 & "', TextBox3='" & Me.TextBox3 & "', TextBox4='" & Me.TextBox4 &  _ 
    "', TextBox5='" & Me.TextBox5 & "',TextBox6='" & Me.TextBox6 & "' where  Code_Utilisateur='" & Me.Code_Utilisateur.Value & "';"
    dans ta solution, tu ouvre un fichier XlS , tu recherche un CodeUseur puis tu modifi les données!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Set C = .Range("User_Code").Find(Me.Code_Utilisateur.Value)
     
    C.Offset(0, 1) = Me.TextBox2 ' Code Exploitant        
    C.Offset(0, 2) = Me.TextBox3 ' Nom & Prenom        
    C.Offset(0, 3) = Me.TextBox4 ' N° Téléphone
    C.Offset(0, 4) = Me.TextBox5 ' Adresse Mail
    C.Offset(0, 5) = Me.TextBox6 ' Adresse Mail D.A
    ma solution ce connecte au fichier xls
    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
    Dim Fichier As String, Feuille As String, strSQL As String,Cnx as Object
    Fichier = "W:\GESTION_VISA_CHEQUE\Fichier_Depart.xlsx" 'chemin complet du fichier fermé
    Set Cnx = CreateObject("ADODB.Connection") 'Création d' objet Connection
    'configuration du DRIVER et ouverture de la connection
    With Cnx
     ' .Provider = "MSDASQL"
    .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
    "DBQ=" & Fichier & "; ReadOnly=False;"
    .Open
    End With
     
    'création de la requête de mis à jour
    Feuille ="BASE_DE_DONNEES"
    strSQL = "update  [" & Feuille & "$] set TextBox2='" & Me.TextBox2 & "', TextBox3='" & Me.TextBox3 & "', TextBox4='" & Me.TextBox4 &  _ 
    "', TextBox5='" & Me.TextBox5 & "',TextBox6='" & Me.TextBox6 & _ 
     "' where  Code_Utilisateur='" & Me.Code_Utilisateur.Value & "';" 'ça fait comme ton  Set C = .Range("User_Code").Find(Me.Code_Utilisateur.Value)
    'et enfin on exécute la requête
    Cnx.Execute strSQL
    Cnx.Close 'on referme la connection

  8. #8
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Mes observations issues du test:
    il y'a erreur au niveau de la ligne 14 (Aussi dans cette partie du code il signale erreur de compilation (membre de méthode ou de données introuvable):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    strSQL = "update  [" & Feuille & "$] set TextBox2='" & Me.TextBox2 & "', TextBox3='" & Me.TextBox3 & "', TextBox4='" & Me.TextBox4 &  _ 
    "', TextBox5='" & Me.TextBox5 & "',TextBox6='" & Me.TextBox6 & _ 
     "' where  Code_Utilisateur='" & Me.Code_Utilisateur.Value & "';" 'ça fait comme ton  Set C = .Range("User_Code").Find(Me.Code_Utilisateur.Value)
    'et enfin on exécute la requête
    Merci

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

Discussions similaires

  1. Copier des données d'un fichier vers un autre sans écraser le second
    Par jalons dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 09/04/2013, 20h07
  2. [XL-2003] Bouton pour transférer des données d'un fichier Excel vers un autre
    Par Alfred23 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 07/09/2011, 16h46
  3. Transférer des données d'une base vers une autre
    Par benyamin139 dans le forum JDBC
    Réponses: 15
    Dernier message: 18/04/2011, 11h08
  4. [XL-2003] Transférer des données d'un fichier dans un autre et Renommer le fichier
    Par sylviobarca dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/03/2011, 14h19
  5. Réponses: 4
    Dernier message: 25/01/2007, 13h38

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