Chemin d'accès multiple

Bonjour a tous!

Merci à ceux qui font profiter de leurs savoirs sur ce site, on progresse fort grâce à eux.

J'ai déjà bien profiter de leurs connaissance depuis que j'ai découvert la vba.

Voici mon pb:

Je travaille sur mac et sur Excel 2011, et je n'arrive pas trouver la solution.

Quel est le code qui me permet d'ouvrir ou d'enregistrer un fichier stocké sur Dropbox, sachant qu'il y a plusieurs utilisateurs et donc un chemin d'accès différent pour chacun.

Sub ArchivageFormulaire()
Dim classeurSource As Workbook, classeurDestination As Workbook

'définir le classeur source
Set classeurSource = ActiveWorkbook

'définir le classeur destination
Set classeurDestination = Application.Workbooks.Open("Macintosh HD:Users:Application.username:Dropbox:DOSSIER ENQUETE LIGNE VIERGE:TEST VBA:BASE DE DONNEES.xlsx")

'copier les données de la "Feuil formulaire" du classeur source vers la "Feuil Base de données" du classeur destination
'classeurSource.Sheets("Formulaire").Range("A3:FI9999").Copy Destination:=classeurDestination.Sheets("Base de données").Range("A3")
classeurSource.Sheets("Formulaire").Range("A3:FI" & classeurSource.Sheets("Formulaire").Range("A" & Cells.Rows.Count).End(xlUp).Row).Copy Destination:=classeurDestination.Sheets("Base de données").Range("A" & classeurDestination.Sheets("Base de données").Range("A" & Cells.Rows.Count).End(xlUp).Row + 1)

'fermer le classeur destination sans message
Application.DisplayAlerts = False
classeurDestination.Close SaveChanges:=True
Application.DisplayAlerts = True

End Sub

Merci de vos réponses.

C'est bon, j'ai reussi à résoudre mon probleme. Et tt seul en plus!!!

J'ai un autre souci.

L'import des données se fait automatiquement et vient se rajouter à la dernière ligne de ma base de données.

Sauf que lorsque que j'importe mes données, il me crée des doublons dans ma base autant de fois que j'importe. Logique

J'aimerais si c'est possible que lorsque j'importe à nouveau ma base il ne copie que ce qui a été modifié préalablement.

Je ne sais pas si je suis clair.

Exemple :

Fichier source

A B C

Pierre 1 COURRIER ENVOYE

Paul 2 OK

Jacques 3 PREV

Base de données après 1ère importation

Pierre 1 COURRIER ENVOYE

Paul 2 OK

Jacques 3 PREV

Si je modifie mon fichier source :

A B C

Pierre 1OK

Paul 2 OK

Jacques 3 PREV

Base de données après 2ème importation

Pierre 1 COURRIER ENVOYE

Paul 2 OK

Jacques 3 PREV

Pierre 1OK

Paul 2 OK

Jacques 3 PREV

Je voudrais qu'après cette 2nde importation, ma base soit ainsi :

Base de données après 2ème importation :

Pierre 1OK

Paul 2 OK

Jacques 3 PREV

Si quelqu'un peut m'aider là-dessus.

Merci d'avance

Sub ArchivageFormulaire()

Dim Chemin As String
    Chemin = ActiveWorkbook.Path & ":" & "BASE DE DONNEES.xlsx"

Dim classeurSource As Workbook, classeurDestination As Workbook

'définir le classeur source
Set classeurSource = ActiveWorkbook

'définir le classeur destination
Set classeurDestination = Application.Workbooks.Open(Chemin)

'C'est ici qu'il me faudrait un code qui me permet si une ligne existe déjà de ne pas la recopier dans la base de donnée, mais aussi si la ligne existe (mais avec quelques modifications) de pouvoir remplacer celle déjà présente dans la base de données

'copier les données de "Formulaire" du classeur source vers la "Base de données" du classeur destination
classeurSource.Sheets("Formulaire").Range("A3:FI" & classeurSource.Sheets("Formulaire").Range("A" & Cells.Rows.Count).End(xlUp).Row).Copy Destination:=classeurDestination.Sheets("Base de données").Range("A" & classeurDestination.Sheets("Base de données").Range("A" & Cells.Rows.Count).End(xlUp).Row + 1)

'fermer le classeur destination sans message
Application.DisplayAlerts = False
classeurDestination.Close SaveChanges:=True
Application.DisplayAlerts = True

End Sub

J'espère avoir été suffisamment clair.

Merci de bien vouloir m'aider la dessus

Bonjour,

Vous pouvez simplement faire une boucle qui parcourt toutes les lignes du fichier et vérifier les différences. Lorsqu'il y a une différence entre le fichier source et le fichier de destination, vous modifiez dans le fichier destination.

c'est exactement cela, mais je ne vois pas du tout comment m'y prendre.


Je ne vois pas comment mettre en place ce genre de code

if ligne formulaire <> ligne base de donnée

then copie ligne formulaire dans base à la dernière ligne

Tu pourrais par exemple faire :

Dim x 'Colonne qui contient tjs des données

While Cells (LigneTestée, x).Value <> "" 'boucle tant que la cellule n'est pas vide

     For i = 1 To 4 'parcourt les 4 colonnes de la ligne par exemple
          If Cells(LigneTestée,i) <> Cells(LigneBDD,i) Then
               Cells(LigneBDD,i) = Cells(LigneTestée,i) 'copie la cellule du formulaire qui a été modifiée dans le fichier BDD
          End If
     Next

LigneTestée = LigneTestée + 1 
Wend

C'est une manière de faire rapidement mais il y en a bien d'autres et surement plus pro

Je teste avec dès que je peux et je te redis!!

Merci encore

Y'a rien à faire je n'arrive pas à l'adapter à mon cas

Vous n'avez pas la possibilité de mettre un petit fichier en exemple ?

Qu'est ce que vous n'arrivez pas à faire exactement ?

Ci-joint mon fichier. La macro a travaillé est sur le module 8.

La base de donnée correspond à la même disposition.

Il faudrait que les données qu'on exporte se rajoute à la suite de la base de données si celle-ci n'existe pas, où qu'elle écrase la ligne correspondante si les deux colonnes des coordonnées y sont déjà présente.

Merci d'avance.

Rechercher des sujets similaires à "chemin acces multiple"