Code VBA avec son Excel sur Onedrive

Résolu/Fermé
xavier62000
Messages postés
58
Date d'inscription
lundi 25 juin 2018
Statut
Membre
Dernière intervention
13 janvier 2020
- 14 août 2018 à 14:27
xavier62000
Messages postés
58
Date d'inscription
lundi 25 juin 2018
Statut
Membre
Dernière intervention
13 janvier 2020
- 15 août 2018 à 00:57
Bonjour, à tous,

J'ai 26 fichiers identiques que j'appel A à Z et un autre 99. Les fichiers A à Z sont partagés avec des utilisateurs tous différents soit (26) sur Onedrive et contiennent du code VBA est fonctionne.

La manip pour les fichiers A à Z est que l'utilisateur sélectionne le fichier à ouvrir sur Onedrive
Click droit
Ouvrir avec Son Excel
Modifie les données et les valide

J'ai testé et sa fonctionne


Pour le fichier 99, celui-ci a pour vocation de transférer une feuille de calcul des fichiers A à Z vers le fichier 99. Les fichiers A à Z sont tous fermés et se trouvent tous dans le même répertoire y compris le fichier 99 soit Onedrive/nom_de_repertoire

Le code VBA existant dans le fichier 99 fonctionne en local. L'ouverture avec son Excel sur Onedrive fonctionne, en revanche, le VBA plante

Ci-dessous, le code pour transférer mes données et en gras/italique/souligné le point de plantage

Merci pour votre aide


Sub IMPORTATION()

' Procédure permettant la consolidation de plusieurs classeurs
'
Dim wbk As Workbook
Dim wshScr As Worksheet
Dim wshDst As Worksheet
Dim celDst As Range
Dim rng As Range
Dim chemin As String
Dim nomClasseur As String
Dim derLigne As Long


'Sheets("TRANS_CONSO").Select
Sheets("TRANS_CONSO").Activate
Range("B3:AK10000").ClearContents


' Arrêt du raffraichissement de l'écran
Application.ScreenUpdating = False
' Définition de la feuille de destination
Set wshDst = ThisWorkbook.Worksheets("TRANS_CONSO")

' Réinitialisation du fichier de synthèse des classements
With wshDst

' Définition de la cellule de destination des données
Set celDst = .Range("B3")
End With

' Etape n° 2 : Parcourir tous les fichiers du dossier courant
chemin = ThisWorkbook.Path & "\"


' Nom du premier classeur dans le dossier
nomClasseur = Dir(chemin & "*.xlsm")



' Boucle pour ouvrir les classeurs du dossier
Do While Len(nomClasseur) > 0
If nomClasseur <> ThisWorkbook.Name Then ' sauf ce classeur de consolidation

' Ouverture du classeur
Set wbk = Workbooks.Open(chemin & nomClasseur, False)
' Définition de la feuille de calcul JOUEURS
On Error Resume Next
Set wshScr = wbk.Worksheets("TRANSFERT")
On Error GoTo 0
' Test existance de la feuille
If Not wshScr Is Nothing Then
With wshScr
' Numéro de le derniere ligne de données
derLigne = .Cells(.Rows.Count, "B").End(xlUp).Row
' Remplacement des formule par leur valeurs (pour rompre les liaisons)
.UsedRange.Value = .UsedRange.Value
' Copie de toutes les données
.Range("B3:AK" & derLigne).Copy celDst
End With
' Définition de la prochaine cellule de destination des données
Set celDst = celDst.Offset(derLigne - 2)

End If
' Fermeture du classeur de données sans le modifier
wbk.Close False
End If
' Nom du prochain classeur
nomClasseur = Dir

Loop
'classement selon club +nom prénom

ActiveWorkbook.Worksheets("TRANS_CONSO").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("TRANS_CONSO").Sort.SortFields.Add Key:=Range( _
"D3:D10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("TRANS_CONSO").Sort.SortFields.Add Key:=Range( _
"F3:F10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("TRANS_CONSO").Sort
.SetRange Range("B3:AK10000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' Message
Call TRANSFERT

MsgBox " Importation et transfert sans doublon terminés "

End Sub



A voir également:

5 réponses

eriiic
Messages postés
24421
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2022
7 100
14 août 2018 à 16:22
Bonjour,

onedrive sur le cloud n'est pas un lecteur local ou sur réseau.
ThisWorkbook.Path te donne quoi par curiosité ?

Arrange-toi pour avoir les fichiers A-Z dans le répertoire de OneDrive de ton PC et travaille dans ce répertoire.
En t'assurant que la synchronisation se fasse bien, c'est souvent le b...l avec le cloud MS
eric
1
xavier62000
Messages postés
58
Date d'inscription
lundi 25 juin 2018
Statut
Membre
Dernière intervention
13 janvier 2020
1
14 août 2018 à 17:16
Slt,

Oui, c'est ce que j'ai fait, les fichiers les fichiers A-Z sont dans le répertoire de OneDrive de mon PC. Pour moi il n'y a pas de problème.

Mais je veux aussi, que certains utilisateurs puissent ce servir du fichier 99. Y a t-il une autre solution pour satisfaire mon besoin.

Pour ta curiosité :

De mon PC : ThisWorkbook.Path te donne c:\users\mon nom\onedrive\mon repertoire

Mais de One drive, effectivement c'est chemin d'accès qui veut rien dire

Cordialement
0
eriiic
Messages postés
24421
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2022
7 100
14 août 2018 à 17:47
Le path est correct oui.
Je ne comprend pas ton erreur sur Dir dans ces condition.
J'ai testé sur mon répertoire onedrive par acquis de conscience mais je n'ai pas eu d'erreur.
C'est quoi le message ?
Et ça donne quoi si tu mets tout en dur ? :
nomClasseur = Dir("c:\users\mon nom\onedrive\mon repertoire\*.xlsm")
0
xavier62000
Messages postés
58
Date d'inscription
lundi 25 juin 2018
Statut
Membre
Dernière intervention
13 janvier 2020
1
14 août 2018 à 18:18
L' erreur ne vient pas quand on est sur le répertoire de onedrive ;

L'erreur vient quand on a lancé Onedrive,
qu'on a sélectionner le fichier 99 , click droit, ouvrir avec SON excel
puis lancer la procédure

Code erreur d'execution 52
Nom ou numéro de fichier incorrect
0
eriiic
Messages postés
24421
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2022
7 100
Modifié le 14 août 2018 à 21:17
Mais là tu l'ouvres à partir du cloud si je comprend bien.
Tu ne peux pas utiliser la version oneline, ça ne peut pas fonctionner ainsi. Ton path sera qq chose https://onedrive.net/xxxx et excel n'a pas les droits pour y accéder comme ça.
D'autant plus pour faire un Dir qui est une commande dos.
Il faut tout ouvrir à partir de c:\users\mon nom\onedrive\mon repertoire

Enfin c'était comme ça. Maintenant avec office 365 et 2016 qui a amélioré le travail collaboratif il y a peut-être des changements et de nouvelles possibilités. Mais en l'occurrence ça n'est pas bon chez toi.
0
xavier62000
Messages postés
58
Date d'inscription
lundi 25 juin 2018
Statut
Membre
Dernière intervention
13 janvier 2020
1
14 août 2018 à 22:22
OK. Donc pour conclure, il est impossible pour les autres utilisateurs puissent ce servir du fichier 99 en actionnant l'importation des données à partir de one drive.

La seule solution est de l'ouvrir à partir de mon users !!

Par le biais de tout hasard, connait tu une autre solution (peut importe je suis open à Tout)

Je ne suis plus à cela près !!

Merci Eric
0
eriiic
Messages postés
24421
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2022
7 100
15 août 2018 à 00:17
ou qu'ils mettent tous les fichiers sur leur pc dans un répertoire de onedrive synchronisé, et qu'il travaillent avec les fichiers du pc.
Comme toi quoi.
Si ils ne sont pas connectés en permanence (itinérants par exemple), par sécurité tu devrais te faire des backups horodatés réguliers de ton répertoire.
Je suppose que MS a bien fait les choses mais bon... En cas de pb tu seras heureux de trouver une copie pas trop ancienne avec un minimum de maj à faire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xavier62000
Messages postés
58
Date d'inscription
lundi 25 juin 2018
Statut
Membre
Dernière intervention
13 janvier 2020
1
15 août 2018 à 00:57
Merci, pour les informations
0