Extraction de donnée via sharepoint

Bonjour chers membres, je suis novice dans vba et je rencontre un problème de taille. En effet je voudrais copier des données se trouvant dans un fichier u sharepoint et les coller dans un autre fichier se trouvant aussi dans le sharepoint. J'ai testé une méthode qui fonctionne chez moi mais pas chez les autres : le chemin local . Je vous prie de m'aider

NB: le chemin local fonctionne bien chez moi '"C:\Users\" & nom & "\Sodiaal\ESM BENESTROFF - Test\"

Sub CopierDonneesEntreClasseurs()

Dim cheminDossierSource As String

Dim cheminDossierDestination As String

Dim cheminClasseurSource As String

Dim cheminClasseurDestination As String

Dim anneeActuelle As String

Dim moisActuel As String

Dim nomFichierSource As String

Dim nomFichierDestination As String

Dim classeurSource As Workbook

Dim classeurDestination As Workbook

Dim feuilleSource As Worksheet

Dim feuilleDestination As Worksheet

Dim h As Long

Dim i As Long

Dim nom As String

nom = Environ("username")

' Récupération automatique du mois et de l'année en cours

anneeActuelle = Year(Date) ' Récupération de l'année actuelle

moisActuel = MonthName(Month(Date)) ' Récupération du mois en cours

' Définition des chemins des dossiers

cheminDossierSource = "C:\Users\" & nom & "\Sodiaal\ESM BENESTROFF - Test\"

cheminDossierDestination = "https:\\sodiaal.sharepoint.com\sites\Benestroffteletravail\Documents partages\Test\Planning Horaires FAB juin2024.xls?web=1"

' Définition des noms des fichiers source et destination

nomFichierSource = "Planning Horaires FAB " & moisActuel & anneeActuelle & ".xls"

nomFichierDestination = "TRS T40 " & anneeActuelle & ".xlsm"

' Constructions des chemins des classeurs source et destination

cheminClasseurSource = cheminDossierSource & nomFichierSource

cheminClasseurDestination = cheminDossierDestination & nomFichierDestination

' Diagnostic: Afficher les chemins des fichiers pour vérification

Debug.Print "Chemin du fichier de destination : " & cheminClasseurDestination

Debug.Print "Chemin du fichier source : " & cheminClasseurSource

' Vérifier l'existence du fichier source

If Dir(cheminClasseurSource) = "" Then

MsgBox "Le fichier source n'existe pas: " & cheminClasseurSource, vbCritical

Exit Sub

End If

' Vérifier l'existence du fichier de destination

If Dir(cheminClasseurDestination) = "" Then

MsgBox "Le fichier de destination n'existe pas: " & cheminClasseurDestination, vbCritical

Exit Sub

End If

' Ouverture du classeur source

On Error GoTo ErreurOuvertureSource

Set classeurSource = Workbooks.Open(cheminClasseurSource)

On Error GoTo 0

' Ouverture du classeur de destination

On Error GoTo ErreurOuvertureDestination

Set classeurDestination = Workbooks.Open(cheminClasseurDestination)

On Error GoTo 0

' Vérification de l'existence des feuilles

On Error Resume Next

Set feuilleSource = classeurSource.Sheets("Extraction")

Set feuilleDestination = classeurDestination.Sheets("BDD")

On Error GoTo 0

If feuilleSource Is Nothing Then

MsgBox "La feuille 'Extraction' n'existe pas dans le fichier source.", vbCritical

GoTo FermerClasseurs

End If

If feuilleDestination Is Nothing Then

MsgBox "La feuille 'BDD' n'existe pas dans le fichier de destination.", vbCritical

GoTo FermerClasseurs

End If

' Copier les données de la feuille source vers la feuille destination

Dim dernièreLigneSource As Long

Dim dernièreLigneDestination As Long

' Trouver la dernière ligne avec des données dans la feuille source

dernièreLigneSource = feuilleSource.Cells(feuilleSource.Rows.Count, 1).End(xlUp).Row

' Trouver la première ligne vide dans la feuille destination

dernièreLigneDestination = feuilleDestination.Cells(feuilleDestination.Rows.Count, 6).End(xlUp).Row + 1

For i = 2 To dernièreLigneSource

If Not IsEmpty(feuilleSource.Cells(i, 1).Value) Then

feuilleDestination.Cells(dernièreLigneDestination, 6).Value = feuilleSource.Cells(i, 1).Value

End If

If Not IsEmpty(feuilleSource.Cells(i, 2).Value) Then

feuilleDestination.Cells(dernièreLigneDestination, 7).Value = feuilleSource.Cells(i, 2).Value

End If

If Not IsEmpty(feuilleSource.Cells(i, 3).Value) Then

feuilleDestination.Cells(dernièreLigneDestination, 9).Value = feuilleSource.Cells(i, 3).Value

End If

dernièreLigneDestination = dernièreLigneDestination + 1

Next i

' Effacer les données dans la feuille 'Extraction'

For i = 2 To dernièreLigneSource

feuilleSource.Cells(i, 1).ClearContents

feuilleSource.Cells(i, 2).ClearContents

feuilleSource.Cells(i, 3).ClearContents

Next i

' Fermer et enregistrer les classeurs

FermerClasseurs:

'If Not classeurSource Is Nothing Then classeurSource.Close SaveChanges:=True

If Not classeurDestination Is Nothing Then classeurDestination.Close SaveChanges:=True

' Message de confirmation

MsgBox "Les données ont été copiées du classeur source vers le classeur de destination."

Exit Sub

ErreurOuvertureSource:

MsgBox "Erreur lors de l'ouverture du fichier source : " & cheminClasseurSource, vbCritical

Exit Sub

ErreurOuvertureDestination:

MsgBox "Erreur lors de l'ouverture du fichier de destination : " & cheminClasseurDestination, vbCritical

If Not classeurSource Is Nothing Then classeurSource.Close SaveChanges:=False

Exit Sub

End Sub

Hello,

Tu fais un lien entre fichier source et fichier cible avec PowerQuery et le tour est joué. En VBA c'est casse tête

@+

Vous pouvez m'en dire plus svp, je l'ai jamais utiliser.

Hello,

Dans Excel, vous avez cette possibilité :

image

Vous renseignez le base de l'URL Sharepoint et ensuite vous n'avez plus qu'à sélectionner le fichier que vous voulez récupérer.

Il faudra sûrement faire quelques traitements mais en théorie c'est très rapide

@+

D'accord merci pour votre aide

D'accord, merci pour votre aide

Rechercher des sujets similaires à "extraction donnee via sharepoint"