Import de données dans un classeur ouvert sur un autre PC
Bonjour le forum,
Je reviens vers vous afin de résoudre une problématique sur laquelle je bloque depuis quelques temps
Je cherche régulièrement sur les forums, je n'ai pas trouvé de topic s’approchant de mon sujet, voilà pourquoi je le créé.
Situation :
Un ordinateur A affiche constamment un fichier Excel 1 d'ordonnancement pour organiser le travail du service en fonction de la capacité et de la charge.
Un ordinateur B fait tourner un fichier Excel 2 de création de charge.
Bien sûr, les ordinateurs A et B sont sur le même réseau.
Fonctionnement :
Le fichier Excel 2 doit transmettre la charge au fichier Excel 1.
Bricolage actuel :
Pour le moment j'ai mis en place un système fonctionnel qui ne me donne pas satisfaction à 100%.
Lorsque qu'une charge est créée sur le fichier Excel 2.
Le fichier Excel 2 transmet cette charge à un fichier Excel tampon et créé un fichier texte (.txt) dans le répertoire du fichier Excel tampon.
Le fichier Excel 1 fait tourner un macro de temporisation qui test la présence du fichier texte dans le répertoire du fichier Excel tampon. Lorsque le fichier Excel 1 trouve le fichier texte, la procédure de récupération de la charge dans le fichier Excel tampon est lancée et le fichier texte est détruis. Et bis repetita...
Ci-dessous le bout de macro du fichier Excel 2 qui envoie les données au fichier Excel tampon :
'Partie pour envoyer etiquette dans logiciel ordo
Dim chemin As String
Dim ligo As Long
Dim i As Currency
Dim existe As Boolean
chemin = "XXX\Tampon etiquettes.xlsx"
Application.ScreenUpdating = False
Workbooks.Open (chemin)
Application.ScreenUpdating = True
ligo = Workbooks("Tampon etiquettes.xlsx").Sheets("Etiquettes").Range("B1000").End(xlUp).Row + 1
'Cette boucle permet de vérifier si l'étiquette n'est pas déjà présente dans le FIFO
'Elle regarde s'il y a le même n° d'OF et de phase entre l'étiquette en cours d'édition et celles déjà
'présente dans le FIFO
For i = 1 To ligo - 1
If Workbooks("Tampon etiquettes.xlsx").Sheets("Etiquettes").Cells(i, 6).Value = donnees(ligne, 2) And
Workbooks("Tampon etiquettes.xlsx").Sheets("Etiquettes").Cells(i, 7).Value = donnees(ligne, 7) Then
'L 'étiquette existe déjà dans le FIFO
existe = True
'On quitte la boucle
Exit For
Else
'L 'étiquette n'existe pas dans le FIFO
existe = False
End If
Next i
'L'étiquette existe déjà dans le FIFO
If existe = True Then
'MsgBox "Il existe déjà une étiquette pour l'OF N° " & donnees(ligne, 2)
Ncartes = Ncartes - 1
SansCarte = SansCarte & Chr(10) & donnees(ligne, 2)
'L'étiquette n'existe pas dans le FIFO
'On l'ajoute dans le FIFO
Else
Workbooks("Tampon etiquettes.xlsx").Sheets("Etiquettes").Cells(ligo, 2) = donnees(ligne, 1) 'N° Affaire
Workbooks("Tampon etiquettes.xlsx").Sheets("Etiquettes").Cells(ligo, 9) = Date 'Date impression
If ligne = pos - 1 Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("XXX\Ordonnancement contrôle\Martin.txt", True)
Else
End If
End If
Ci-dessous la macro du fichier Excel 1 qui test la présence du fichier texte dans le répertoire du fichier Excel tampon et appelle la macro qui importe les données du fichier Excel tampon dans le fichier Excel 1 :
Sub Tempo()
'Programmation de l'évènement toutes les 10 minutes
Tps = Now + TimeValue("00:10:00")
Application.OnTime Tps, "Tempo"
'#On déclare le chemin d'acces
chemin = "XXX\Ordonnancement contrôle\Martin.txt"
'#Si la fonction Dir ne trouve rien la variable "cherche" reste vide.
cherche = Dir(chemin, vbSystem + vbDirectory + vbHidden)
If cherche <> "" Then
'Affichage du message d'information durant que le programme tourne
IMPORTET.Show (0)
IMPORTET.Repaint
Call Import
'On cache le message d'information car le programme est terminé
IMPORTET.Hide
Call Calcul_charge
Else
End If
End Sub
Objectif visé :
J'aimerais que le fichier Excel 2 puisse modifier et enregistrer le fichier Excel 1 sans avoir à passer par un fichier tampon. En résumé, ouvrir une communication directe entre les deux fichiers.
Voilà le problème est posé, j'espère que quelqu'un pourra me proposer une solution efficace !
Je vous remercie par avance de vos réponses et du temps donné à mon sujet.
J'ai essayé de détailler au maximum le sujet, s'il manque des choses n’hésitais pas à me demander !
Calone Bastien
Bonjour,
Je pense que ce problème peut se résoudre avec des liens Access.
Dans la base de données Access, on peut définir une source de données de type fichier Excel.
C'est cette piste que je te propose de creuser pour faire ce lien direct entre tes deux fichiers.
J'ai fais des tests, ça fonctionne bien et c'est déjà plus sécurisant que mon fichier tampon...
Mais je dois changer certains mode de fonctionnement de mon application d'ordonnancement
Ne m'en veux pas, mais je vais laisser le sujet en non résolu, si jamais quelqu'un à une solution en liaison directe sans passer par Access !
Si personne ne répond je vais mettre en oeuvre le système avec Access
Je te remercie de m'avoir soumis cette idée fonctionnelle