Mise à jour automatique

Bonjour Forum

Petite question de mise à jour. J'ai un fichier sur mon disque dur et également sur une clef USB. Existe t-il un moyen pour que lorsque je branche ma clef il y ai comparaison et que le plus ancien des fichiers s'actualise par rapport au plus récent ?

Le fichier porte le même nom et c'est un fichier Excel.

Merci

Adrien

T'es vraiment un feignant... hein ?

Te vexes pas ...Je rigole !

On recommence :

Bonjour,

ça doit être possible mais surement pas en VBA peut-être en VBS et encore...

Par contre ce qui est possible c'est de lancer une macro depuis un bouton personnalisé

qui fera la comparaison des 2 et qui ouvrira le plus récent.

Voir à ce sujet l'aide de VBA sur

FileDateTime

A vue de nez, ça donne :

Sub test()
NomF = ""C:\Documents and Settings\...\MonBeauFichier.xls" 
Workbooks.Open (IIf(FileDateTime(NomF) > FileDateTime("E:" & NomF), NomF, "E:" & NomF))
End Sub

A tester... Evidement YFO remplacer E: par la lettre (et chemin) de ton Drive USB.

Au lieu de Workbooks.Open ça serait peut être mieux de faire un copier coller du fichier le plus récent sur le plus ancien et de toujours démarrer sur le disque dur.

A moins que ta clef USB serve aussi de sauvegarde ?

A+

Bonsoir à tous

Feignant non, mais si mon ordi peut travailler pour moi, pourquoi s'en passer. Pendant qu'il synchronise mes fichiers je peux faire autre chose. Avec un ordi tu arrives bien à ouvrir ou fermer les volets de ta maison ou allumer une lampe alors pourquoi pas comparer deux fichier et écraser le plus ancien par le nouveau?

Je vais voir ce que tu proposes bien que cela soit un peu du chinois pour moi. Je te tiens au parfum.

Merci

Adrien

PS : je relis ta réponse, je ne cherche pas qu'il ouvre le plus récent mais qu'il écrase l'ancien par le nouveau.

Oui, j'ai un peu lu en diagonale... En plus mon code est pourri... ça m'apprendra à faire le malin !

En voici un autre (vérifié !) qui fait une vraie copie...

Sub test()
Dim Chemin$, NomF$, Lecteur$
Chemin = "C:\Documents and Settings\...\"
NomF = "MonBeauSapin.xls"
Lecteur = "F:"
Source = IIf(FileDateTime(Chemin & NomF) > FileDateTime(Lecteur & NomF), Chemin & NomF, Lecteur & NomF)
Cible = IIf(Source = Chemin & NomF, Lecteur & NomF, Chemin & NomF)
FileCopy Source, Cible
End Sub

YAPUKA changer le

Chemin, NomF, et Lecteur en complètant éventuellement avec un chemin si ton fichier n'est pas à la racine de ta clef...

Ok ?

RE

Si j'ai bien compris, je créé un bouton dans ma barre d'outil auquel j'affecte la macro que j'aurai écrite avec tes éléments en adaptant les chemins d'accès.

Ca va être un grand moment et ne t'attends pas à avoir le résultat dans l'heure. Mais il faut que j'y arrive.

Merci et à +

Adrien

yapa de raison : c'est l'a, b, c, du macroteur !

hello

vois aussi le gestionnaire de synchronisation intégré à Windows

Bonsoir jmd

Tu en as trop dit ou pas assez.

Où, quand et comment ça marche ?

Merci

Adrien

bonsoir,

je suppose que notre ami veut parler de l'utilitaire Taches Planifiées du Panneau de Configuration.

J'y avais bien pensé également mais ta demande est un peu spécifique et je ne vois pas bien effectivement comment on s'en sort même avec un script(VBS)

Si notre ami à des compléments sur ce sujet je suis toutes ouïes béantes !

A+

re à vous

pas les tâches planifiées (sert à mettre en route un programme à date et heure fixe)

ouvrir l'aide de Windows, chercher "sychronisation" et lire un des articles trouvés

et ouvrir le "gestionnaire de synchronisation"

Bonsoir Forum, Bonsoir galopin01

Au risque de paraitre un peu sot, mais il y a un début à tout. Dans les lignes ci-dessous, je remplace les mots Chemin, NomF par le chemin pour accéder au fichier ainsi que par le nom de celui-ci ? Etant donné que j'ai désigné le chemin et le nom dans les lignes précédentes.

Source = IIf(FileDateTime(Chemin & NomF) > FileDateTime(Lecteur & NomF), Chemin & NomF, Lecteur & NomF)

Cible = IIf(Source = Chemin & NomF, Lecteur & NomF, Chemin & NomF)

FileCopy Source, Cible

End Sub

J'ai tenté d'écrire la macro. Faut-il mettre le signe _ à la place des espaces ?

Merci

Adrien

bonsoir,

non, non,

Tu décris le chemin, nom de fichier et lecteur dans les 3 premières lignes, en faisant bien attention aux "" et aux \ et c'est tout.

Les lignes que tu cites doivent subsister sans modification.

pas de _

Pour récupérer le chemin facilement, à partir d'un classeur vierge, tu enregistres une macro qui ouvre chaque classeur, tu arrêtes l'enregistrement, tu refermes les classeurs et tu récupères le chemin dans la macro d'enregistrement

A+

Bonjour Forum, Bonjour galopin01

Essai pas très concluant, je te joins un fichier pour que tu puisses contempler mon oeuvre.

N'hésite pas à me dire si je suis un sot.....

https://www.excel-pratique.com/~files/doc2/Macro_MAJ.zip

Merci

Adrien

Oui, Oui !

Euh... Pardon : je le ferai plus... mébon, là tu m'a poussé !

ça, ça ne se fait pas :

Sub MAJ_PIECES()
Sub Test()
...
End Sub
End Sub

C'est soit :

Sub MAJ_PIECES()
...
End Sub

soit

Sub Test()
...
End Sub

...mais pas de poupées russes !

De plus si j'ai bien compris tu as un dossier "Collection de pièces" dans Mes Documents

et un dossier "Collection de pièces" dans G:

chacun de ces dossiers doit contenir ton classeur "Projet de ....) c'est ça ?

Dans ce cas il faut rajouter un \ avant le " à la fin de chemin

et rajouter un \ avant le " à la fin de lecteur.

A+

RE

Error code 70 et quand je clic OK débocage la macro s'affiche avec "FileCopy Source, Cible" surligné en jaune.

A+

Adrien

bonjour,

Faire un Copier/Coller du code SVP

(pas de jpg... hein !)

A+

1-Vérifier également que la clef n'est pas partagée (Clic droit propriétés)

Et que ce n'et pas une clef exotique... (une démo ou une clef d'aide ou de pub d'une société quelconque)

2- Enregistrer une macro qui copie quelque chose en provenance de cette clef et me donner le texte de cette macro

3- Enregister une autre macro qui copie ton fichier "au bon endroit sur cette clef", et me donner le texte de cette macro.

A+

Bonsoir Forum, Bonsoir galopin01

Pas pu répondre plus tôt, je rentre du boulot.

Voilà un copier/coller de la macro

Sub test()

Dim Chemin$, NomF$, Lecteur$

Chemin = "C:\Documents and Settings\Dominique\Mes documents\Collection de pièces\"

NomF = "Projet collection de pièces.xls"

Lecteur = "G:\Collection de pièces\"

Source = IIf(FileDateTime(Chemin & NomF) > FileDateTime(Lecteur & NomF), Chemin & NomF, Lecteur & NomF)

Cible = IIf(Source = Chemin & NomF, Lecteur & NomF, Chemin & NomF)

FileCopy Source, Cible

End Sub

Je te remercie de t'occuper de mon pb de débutant. Pourtant j'ai déjà réalisé des macros mais en enregistrant les actions.

A+

Adrien

Revoir également les points 1, 2 et 3 de ma dernière réponse. et plus particulièrement le 2 et 3.

Enregistrer une macro qui copie le fichier à partir du disque dur vers la clef.

Enregister une autre macro qui copie le fichier de la clef vers ton disque dur.

A+

Bonjour Forum, Bonjour galopin01

Je ne sais pas si j'ai bien tout saisi. Voici deux macros qui fonctionnent.

Macro réalisée par un (e) collègue enregistrée sous C:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

With Worksheets("Best ways to finish")

Set rPlage = .Range("A2:A" & .Range("A" & Cells.Rows.Count).End(xlUp).Row)

End With

' Rechercher la valeur dans la plage

Set rCell = rPlage.Find(Target.Value, , LookIn:=xlValues, lookat:=xlWhole)

' Si la valeur est trouvée, afficher la combinaison

If Not rCell Is Nothing Then

usfCombinaison.Show

End If

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Cells(8, 10) <> "" Then ' SI J8 N'EST PAS VIDE

If Cells(8, 12) <> "" Then ' ET SI L8 N'EST PAS VIDE ALORS

Cells(8, 13) = Cells(8, 10) ' K8 = J8

End If

If Cells(8, 12) = "" Then ' SI L8 EST VIDE ALORS

Cells(8, 12) = Cells(8, 10) ' L8 = J8

End If

End If

End Sub

Macro que j'ai réalisée pour un fichier stocké sur ma clef

Sub Effacement_tableaux()

'

' Effacement_tableaux Macro

' Macro enregistrée le 22/08/2009 par Accueil

'

' Touche de raccourci du clavier: Ctrl+Maj+O

'

Range("N8:O14,S8:T14,X8:Y14,AC8:AD14,N22:O28,S22:T28,X22:Y28,AC22:AD28").Select

Range("AC22").Activate

ActiveWindow.SmallScroll Down:=30

Range( _

"N8:O14,S8:T14,X8:Y14,AC8:AD14,N22:O28,S22:T28,X22:Y28,AC22:AD28,N36:O42,S36:T42,X36:Y42,AC36:AD42,N50:O56,S50:T56,X50:Y56,AC50:AD56,N64:O70,S64:T70,X64:Y70,AC64:AD70" _

).Select

Range("AC64").Activate

ActiveWindow.SmallScroll Down:=12

Range( _

"N8:O14,S8:T14,X8:Y14,AC8:AD14,N22:O28,S22:T28,X22:Y28,AC22:AD28,N36:O42,S36:T42,X36:Y42,AC36:AD42,N50:O56,S50:T56,X50:Y56,AC50:AD56,N64:O70,S64:T70,X64:Y70,AC64:AD70,N78:O84,S78:T84,X78:X84,Y78:Y84,AC78:AD84" _

).Select

Range("AC78").Activate

Selection.ClearContents

ActiveWindow.SmallScroll Down:=-45

Range("N8").Select

End Sub

Merci

Adrien

Rechercher des sujets similaires à "mise jour automatique"