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.
D'accord merci pour votre aide
D'accord, merci pour votre aide