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 ….

Rechercher des sujets similaires à "chemin acces fichier serveur partage"