Chemin d'accès vers un fichier sur un serveur partagé
Bonjour à tous !
Voici mon problème puisque je ne peux pas, avec Excel, faire du multi-utilisateur en simultané sur une même fichier (avec Excel online non plus car mon fichier est trop lourd 15Mo et le mode partagé d'Excel ne convient pas à l'usage que je prévois pour ce fichier)
Donc :
J'ai un classeur enregistré sur le serveur partagé (et non sur mon disque en local) appelé "PLANNING.LOGISTIQUE".
J'ai un autre classeur appelé "Planning Logistique pour Com-ADV" dans lequel j'ai dans l'onglet "PlanningMONTAGE" des macro pour récupérer les données qui sont dans l'onglet "PIVOTmontage" du classeur "PLANNING.LOGISTQIUE".
Mais voilà, cela ne marche que si j'ai ouvert mon fichier "PLANNING.LOGISTIQUE" sinon, si il est ouvert par un autre utilisateur ou s'il est fermé, cela ne marche pas et je n'arrive pas à voir ce qui cloche dans mes codes que je vous mets ci-dessous :
Code pour actualiser à l'ouverture du doc puis toutes les 15 secondes, là le problème est qu'il ne veut pas appeler les Feuill10 et 14 et je ne sais pas pourquoi...
Sub Actualiser()
' D?finit l'intervalle avec l'heure actuelle
uneheure = TimeSerial(Hour(Time), Minute(Time), Second(Time) + 15)
' Appel r?cursif
Application.OnTime uneheure, "Actualiser"
Call Feuil10.CopierCellulesNonVides
Call Feuil14.CopierCellulesNonVides
End Sub
Private Sub auto_Open()
Actualiser
End Sub
Et la le code de la feuil10 dans lequel j'ai le chemin pour récupérer les datas dans le classeur "PLANNING.LOGISTQIUE" :
Sub CopierCellulesNonVides()
Dim wsPIVOTmontage As Worksheet
Dim wsPlanningMONTAGE As Worksheet
Dim L As Long
Dim LS As Long
Dim DLig As Long
Dim Chemin As String
Chemin = "Z:\documents\Planning livraisons-montages\Planning logistique PREVISIONNEL\MODELE\PLANNING.LOGISTIQUE"
Application.ScreenUpdating = False
Set wsPIVOTmontage = Workbooks("PLANNING.LOGISTIQUE").Sheets("PIVOTmontage") 'le nom de ta feuille qui contient les donn?es
Set wsPlanningMONTAGE = ThisWorkbook.Sheets("PlanningMONTAGE") 'le nom de ta feuille de destination
' R?Z le tableau avant de le mettre ? jour
DLig = wsPlanningMONTAGE.Range("A" & Rows.Count).End(xlUp).Row
wsPlanningMONTAGE.Range("A3:M" & DLig).ClearContents
' Mettre ensuite ? jour
LS = 1
For L = 2 To 13502 'derni?re ligne du tableau
If wsPIVOTmontage.Cells(L, 6) <> "" Then
LS = LS + 1
wsPlanningMONTAGE.Range("A" & LS & ":M" & LS) = wsPIVOTmontage.Range("A" & L & ":M" & L).Value
End If
Next L
Application.ScreenUpdating = True
End Sub
J'ai besoin de pourvoir récupérer donc les données du classeur PLANNING.LOGISTIQUE que celui-ci soit ouvert par un autre utilisateur ou bien fermé.
J'en appelle votre expertise car la mienne n'est malheureusment pas suffisante ici...
Merci d'avance pour votre aide !
bonjour
"récupérer de données" c'est le travail de Power Pivot Query *, pas de VBA
* qui est un véritable ETL super puissant
tu devras le télécharger, non livré d'origine à l'époque d'Excel 2010
Bonjour JMD,
Je souhaiterai passser par du VBA, tu aurais une piste à me proposer ?
re
aucune !
car l'outil est maintenant Power Query
du coup j'ai abandonné VBA, trop complexe et pas fiable (entre mes mains au moins
faut dire que je ne l'ai jamais adopté !
Bonjour à tous,
Quelqu'un aurait une solution svp, j' ai absolument besoin d'une âme charitable pour m'aider…..
Bonjour,
peux-tu joindre ton fichier "PLANNING.LOGISTIQUE" ?
re,
seul la disposition et le format des données est importante, (aussi ligne de titre s'il y en a une)
une partie des données dans les bonne adresse des cellules, nom de l'onglet, format des données (numérique ou texte)
tu peut joindre un fichier avec une petit partie de données bidon.
Bonjour,
peux-tu joindre ton fichier "PLANNING.LOGISTIQUE" ?
Bonjour i20100,
Non malheureusement je ne peux pas la charger sur le forum, il est trop volumineux (15MO)… j'ai essayer en supprimant le maximum de chose mais il reste trop lourd...
Mais je peux te dire que mon format de tableau dans PLANNING.LOGISTQIUE est classique (une quinzaine de colonnes avec des centaines de lignes comportant soit des dates, des chiffre ou du texte).
Le problème est de rapatrier le tableau de la feuille " PIVOTmontage" qui se trouve dans le fichier "maître" PLANNING.LOGISTQIUE, (fichier " maître" qui est enregistré sur un serveur partagé d'entreprise), et ce quand le fichier maître est ouvert par un autre utilisateur ou bien fermé.
Tu vois mon problème ?
Je te remets mes codes (qui ne marchent pas) pour aller chercher le tableau dans le fichier "maître" PLANNING.LOGIQTQUE :
Code pour actualiser à l'ouverture du doc puis toutes les 15 secondes, là le problème est qu'il ne veut pas appeler les Feuill10 et 14 et je ne sais pas pourquoi...
Sub Actualiser()
' D?finit l'intervalle avec l'heure actuelle
uneheure = TimeSerial(Hour(Time), Minute(Time), Second(Time) + 15)
' Appel r?cursif
Application.OnTime uneheure, "Actualiser"
Call Feuil10.CopierCellulesNonVides
Call Feuil14.CopierCellulesNonVides
End Sub
Private Sub auto_Open()
Actualiser
End Sub
Et la le code de la feuil10 dans lequel j'ai le chemin pour récupérer les datas dans le classeur "PLANNING.LOGISTQIUE" :
Sub CopierCellulesNonVides()
Dim wsPIVOTmontage As Worksheet
Dim wsPlanningMONTAGE As Worksheet
Dim L As Long
Dim LS As Long
Dim DLig As Long
Dim Chemin As String
Chemin = "Z:\documents\Planning livraisons-montages\Planning logistique PREVISIONNEL\MODELE\PLANNING.LOGISTIQUE"
Application.ScreenUpdating = False
Set wsPIVOTmontage = Workbooks("PLANNING.LOGISTIQUE").Sheets("PIVOTmontage") 'le nom de ta feuille qui contient les donn?es
Set wsPlanningMONTAGE = ThisWorkbook.Sheets("PlanningMONTAGE") 'le nom de ta feuille de destination
' R?Z le tableau avant de le mettre ? jour
DLig = wsPlanningMONTAGE.Range("A" & Rows.Count).End(xlUp).Row
wsPlanningMONTAGE.Range("A3:M" & DLig).ClearContents
' Mettre ensuite ? jour
LS = 1
For L = 2 To 13502 'derni?re ligne du tableau
If wsPIVOTmontage.Cells(L, 6) <> "" Then
LS = LS + 1
wsPlanningMONTAGE.Range("A" & LS & ":M" & LS) = wsPIVOTmontage.Range("A" & L & ":M" & L).Value
End If
Next L
Application.ScreenUpdating = True
End Sub
Bonjour à tous,
Quelqu'un serait-il m'aider quant au problème que je rencontre, car j'ai épuisé toute mes options et je ne sais pas comment faire….
Bonjour à tous !
Voici mon problème puisque je ne peux pas, avec Excel, faire du multi-utilisateur en simultané sur une même fichier (avec Excel online non plus car mon fichier est trop lourd 15Mo et le mode partagé d'Excel ne convient pas à l'usage que je prévois pour ce fichier)
Donc :
J'ai un classeur enregistré sur le serveur partagé (et non sur mon disque en local) appelé "PLANNING.LOGISTIQUE".
J'ai un autre classeur appelé "Planning Logistique pour Com-ADV" dans lequel j'ai dans l'onglet "PlanningMONTAGE" des macro pour récupérer les données qui sont dans l'onglet "PIVOTmontage" du classeur "PLANNING.LOGISTQIUE".
Mais voilà, cela ne marche que si j'ai ouvert mon fichier "PLANNING.LOGISTIQUE" sinon, si il est ouvert par un autre utilisateur ou s'il est fermé, cela ne marche pas et je n'arrive pas à voir ce qui cloche dans mes codes que je vous mets ci-dessous :
Code pour actualiser à l'ouverture du doc puis toutes les 15 secondes, là le problème est qu'il ne veut pas appeler les Feuill10 et 14 et je ne sais pas pourquoi...
Sub Actualiser() ' D?finit l'intervalle avec l'heure actuelle uneheure = TimeSerial(Hour(Time), Minute(Time), Second(Time) + 15) ' Appel r?cursif Application.OnTime uneheure, "Actualiser" Call Feuil10.CopierCellulesNonVides Call Feuil14.CopierCellulesNonVides End Sub Private Sub auto_Open() Actualiser End Sub
Et la le code de la feuil10 dans lequel j'ai le chemin pour récupérer les datas dans le classeur "PLANNING.LOGISTQIUE" :
Sub CopierCellulesNonVides() Dim wsPIVOTmontage As Worksheet Dim wsPlanningMONTAGE As Worksheet Dim L As Long Dim LS As Long Dim DLig As Long Dim Chemin As String Chemin = "Z:\documents\Planning livraisons-montages\Planning logistique PREVISIONNEL\MODELE\PLANNING.LOGISTIQUE" Application.ScreenUpdating = False Set wsPIVOTmontage = Workbooks("PLANNING.LOGISTIQUE").Sheets("PIVOTmontage") 'le nom de ta feuille qui contient les donn?es Set wsPlanningMONTAGE = ThisWorkbook.Sheets("PlanningMONTAGE") 'le nom de ta feuille de destination ' R?Z le tableau avant de le mettre ? jour DLig = wsPlanningMONTAGE.Range("A" & Rows.Count).End(xlUp).Row wsPlanningMONTAGE.Range("A3:M" & DLig).ClearContents ' Mettre ensuite ? jour LS = 1 For L = 2 To 13502 'derni?re ligne du tableau If wsPIVOTmontage.Cells(L, 6) <> "" Then LS = LS + 1 wsPlanningMONTAGE.Range("A" & LS & ":M" & LS) = wsPIVOTmontage.Range("A" & L & ":M" & L).Value End If Next L Application.ScreenUpdating = True End Sub
J'ai besoin de pourvoir récupérer donc les données du classeur PLANNING.LOGISTIQUE que celui-ci soit ouvert par un autre utilisateur ou bien fermé.
J'en appelle votre expertise car la mienne n'est malheureusment pas suffisante ici...
Merci d'avance pour votre aide !
re,
tu pourrais utiliser ADODB.Connection pour faire la requête,
voici un exemple,
Sub RequeteClasseurFerme()
'activer la référence Microsoft ActiveX Data Objects x.x Library
Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim rs As ADODB.Recordset
Dim tb()
'Définit le classeur fermé servant de base de données
Fichier = "C:\Users\isabelle\Documents\Test1\base.xls"
'Nom de la feuille dans le classeur fermé
NomFeuille = "Feuil1"
Set Cn = New ADODB.Connection
'--- Connection ---
With Cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=NO;"""
.Open
End With
'Définit la requête.
texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
Set rs = New ADODB.Recordset
Set rs = Cn.Execute(texte_SQL)
'Ecrit le résultat de la requête dans la cellule A2
ActiveSheet.Range("A2").CopyFromRecordset rs
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
End Sub
Bonjour;
Chemin = "Z:\documents\Planning livraisons-montages\Planning logistique PREVISIONNEL\MODELE\PLANNING.LOGISTIQUE"
tu n'indiques pas l'extension du fichier ? PLANNING.LOGISTIQUE.xls ? xlsm ….