Résolu Office 365 mise a jour automatique fichier excel

cmdavid

XLDnaute Nouveau
Bonjour a tous,
je suis débutant, je ne sais rien sur la VBA
donc ci-joint les excel, si quelqu'un pouvant faire en sorte qu'ils fonctionnent..
problème :
j'ai 2 fichier Excel avec des liens entre eux
1.BASE
2.RAPPORT
dans le 2.RAPPORT il y a un bouton avec des dates
ce que je souhaite est que lorsque je change la date dans 2.RAPPORT, les données soit modifiées dans 1.BASE sans ouvrir 1.BASE et met a jour les données de 2.RAPPORT.

par avance un grand merci!
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

cmdavid

XLDnaute Nouveau
Bonjour a tous,
ce que je souhaites faire a l'air très compliqué!
j'ai vraiment besoin d'aide rapidement!
merci par avance
 

job75

XLDnaute Barbatruc
Bonjour cmDavid,
les données soit modifiées dans 1.BASE sans ouvrir 1.BASE
Ben non, pour que les liaisons dans le fichier BASE.xlsm se mettent à jour il faut ouvrir le fichier.

C'est ce que fait automatiquement cette macro dans la feuille RDG du fichier RAPPORT.xlsm :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B3]) Is Nothing Then Exit Sub
Dim etat As Boolean
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False 'évite le message quand des liaisons ne peuvent pas être mises à jour
    etat = .AskToUpdateLinks 'etat de l'option avancée
    .AskToUpdateLinks = False 'évite le message de confirmation des mises à jour
    Workbooks.Open(ThisWorkbook.Path & "\Base.xlsm").Close True 'à adapter, le fichier est ouvert, enregistré et refermé
    .AskToUpdateLinks = etat 'état initial
End With
ThisWorkbook.Save 'enregistrement
End Sub
Elle s'exécute quand la cellule B3 est modifiée.

Téléchargez les fichiers joints dans le même dossier (le bureau).

A+
 

Fichiers joints

Dernière édition:

cmdavid

XLDnaute Nouveau
Bonjour cmDavid,

Ben non, pour que les liaisons dans le fichier BASE.xlsm se mettent à jour il faut ouvrir le fichier.

C'est ce que fait automatiquement cette macro dans la feuille RDG du fichier RAPPORT.xlsm :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B3]) Is Nothing Then Exit Sub
Dim etat As Boolean
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False 'évite le message quand des liaisons ne peuvent pas être mises à jour
    etat = .AskToUpdateLinks 'etat de l'option avancée
    .AskToUpdateLinks = False 'évite le message de confirmation des mises à jour
    Workbooks.Open(ThisWorkbook.Path & "\Base.xlsm").Close True 'à adapter, le fichier est ouvert, enregistré et refermé
    .AskToUpdateLinks = etat 'état initial
End With
ThisWorkbook.Save 'enregistrement
End Sub
Elle s'exécute quand la cellule B3 est modifiée.

Téléchargez les fichiers joints dans le même dossier (le bureau).

A+


un grand merci pour votre aide, ça marche.
j'ai un autre petit problème, le fichier BASE doit se mettre a jour automatiquement sans être ouvert lorsque les données de A1, A2 et A3 sont modifiées.
voir fichier joint
encore un grand merci pour votre aide
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour cmdavid,

Il suffit de télécharger les 5 fichiers dans le même dossier, le fichier BASE.xlsm est mis à jour quand la macro précédente s'exécute.

Comme toutes les liaisons fonctionnent on peut supprimer l'instruction .DisplayAlerts = False.

Bonne journée.
 

cmdavid

XLDnaute Nouveau
Bonjour cmdavid,

Il suffit de télécharger les 5 fichiers dans le même dossier, le fichier BASE.xlsm est mis à jour quand la macro précédente s'exécute.

Comme toutes les liaisons fonctionnent on peut supprimer l'instruction .DisplayAlerts = False.

Bonne journée.
Bonjour Job75,
je dois dire que je ne comprends pas!
 

cmdavid

XLDnaute Nouveau
je ne comprend pas ce qu'il faut faire exactement, quel programme macro?
Ben celui qui s'exécute automatiquement dans le fichier RAPPORT.xlsm en modifiant B3.
je viens de faire le truc que tu as dis et ça marche, merci, même si je ne suis pas sur d'avoir compris comment j'ai fais!

autre petite question, comment faire fonctionner les deux macros ci-dessous:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B3]) Is Nothing Then Exit Sub
Dim etat As Boolean
With Application
.ScreenUpdating = False
.DisplayAlerts = False
etat = .AskToUpdateLinks
.AskToUpdateLinks = False
Workbooks.Open(ThisWorkbook.Path & "\Base.xlsm").Close True
.AskToUpdateLinks = etat
End With
ThisWorkbook.Save
End Sub

et :
Private Sub Workbook_Open()
Dim nomfich$
nomfich = ThisWorkbook.Path & "\" & Me.Name
If IsError([Fichier_original]) Then
Me.Names.Add "Fichier_original", nomfich, Visible:=False
Me.Save
Else
If nomfich <> [Fichier_original] Then
On Error Resume Next
Workbooks.Open [Fichier_original]
Me.ChangeFileAccess xlReadOnly
Kill nomfich
Me.Close False
End If
End If
End Sub
 

job75

XLDnaute Barbatruc
Bah la 1ère macro c'est celle que je vous ai donnée, elle doit être placée dans le code de la feuille comme je l'ai dit.

La 2ème macro est à placer dans le ThisWorkbook.
 

cmdavid

XLDnaute Nouveau
Bah la 1ère macro c'est celle que je vous ai donnée, elle doit être placée dans le code de la feuille comme je l'ai dit.

La 2ème macro est à placer dans le ThisWorkbook.
Bonjour job75,
en plaçant le code dans thisworkbook, le fichier est détruit des l’exécution du code!
autre probleme, votre formule pour la mise a jour fonctionne, mais je voudrais qu'elle fonctionne aussi avec d'autre case "langue, monnaie"
voir fichier joint
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour cmdavid, le forum,
en plaçant le code dans thisworkbook, le fichier est détruit des l’exécution du code!
Pourquoi utiliser une macro quand on n'a pas compris à quoi elle sert ?

Cette macro Workbook_Open est destinée à éviter la copie du fichier dans un autre dossier ou son changement de nom.

Au départ le nom "Fichier_original" ne doit pas exister.
autre probleme, votre formule pour la mise a jour fonctionne, mais je voudrais qu'elle fonctionne aussi avec d'autre case "langue, monnaie"
Dans la macro du post #3 remplacez Intersect(Target, [B3]) par Intersect(Target, [B3,B5:B6])

Bonne journée.
 

cmdavid

XLDnaute Nouveau
Bonjour cmdavid, le forum,

Pourquoi utiliser une macro quand on n'a pas compris à quoi elle sert ?

Cette macro Workbook_Open est destinée à éviter la copie du fichier dans un autre dossier ou son changement de nom.

Au départ le nom "Fichier_original" ne doit pas exister.

Dans la macro du post #3 remplacez Intersect(Target, [B3]) par Intersect(Target, [B3,B5:B6])

Bonne journée.
compris pour la macro de mise a jour, merci et ça marche

pour macro éviter copie, par quoi remplacer "Fichier_original" ou quoi faire pour que le fichier fonction sans activer la macro lorsque je fais des copies et que la macro soit activée lorsque je ddécide que le fichier doit activer la macro?
 

cmdavid

XLDnaute Nouveau
bonjour a tous,
je n'ais pas trouvé la solution pour la macro éviter la copie du fichier, a savoir ce que je dois faire pour "Au départ le nom "Fichier_original" ne doit pas exister".
si quelqu'un pouvait m'aider!
 

job75

XLDnaute Barbatruc
Bonjour cmdavid,
je n'ais pas trouvé la solution pour la macro éviter la copie du fichier, a savoir ce que je dois faire pour "Au départ le nom "Fichier_original" ne doit pas exister".
C'est pourtant clair : si ce nom existe dans le Gestionnaire de noms supprimez-le.

A+
 

cmdavid

XLDnaute Nouveau
Bonjour,
j’’ai vérifier, il n’existe pas de nom dans le gestionnaire

je ne comprend pas pourquoi la macro ci-dessous fonctionne pour certains fichiers et pas pour les d'autres!

exemple fichier ou cela ne fonctionne pas si j'utilise la macro :
1. MMG RAPPORT TBS - BASE
2. MMG RAPORT TBS - DG
la macro est mise dans le fichier MMG RAPPORT TBS - BASE avec liens sur MMG RAPORT TBS - DG

Alors que pour le fichiers BASE1 cela fonctionne avec les liens sur le RAPPORT2,


Private Sub Workbook_Open()
Dim nomfich$
nomfich = ThisWorkbook.Path & "\" & Me.Name
If IsError([Fichier_original]) Then
Me.Names.Add "Fichier_original", nomfich, Visible:=False
Me.Save
Else
If nomfich <> [Fichier_original] Then
On Error Resume Next
Workbooks.Open [Fichier_original]
Me.ChangeFileAccess xlReadOnly
Kill nomfich
Me.Close False
End If
End If
End Sub
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour cmdavid,
j’’ai vérifier, il n’existe pas de nom dans le gestionnaire
Je parie cent balles que vous n'avez rien vérifié du tout si le nom est masqué, puisqu'on le crée avec la propriété Visible:=False !!!

Pour afficher les noms définis masqués il suffit d'exécuter la macro :
VB:
Sub Affiche()
Dim nom As Name
For Each nom In ThisWorkbook.Names
    nom.Visible = True
Next
End Sub
A+
 
Ce message a été identifié comme étant une solution!

merinos

XLDnaute Occasionnel
Bonjour a tous,
je suis débutant, je ne sais rien sur la VBA
donc ci-joint les excel, si quelqu'un pouvant faire en sorte qu'ils fonctionnent..
problème :
j'ai 2 fichier Excel avec des liens entre eux
1.BASE
2.RAPPORT
dans le 2.RAPPORT il y a un bouton avec des dates
ce que je souhaite est que lorsque je change la date dans 2.RAPPORT, les données soit modifiées dans 1.BASE sans ouvrir 1.BASE et met a jour les données de 2.RAPPORT.

par avance un grand merci!
C'est a cela que sert PowerQuery. simple et rapide.
Comme c'est inclus dans office 365, c'est hyper rapide.

La seule complication vien quand tu ne sais pas combien de fichier tu dois importer...
Dans ce cas on importe les fichiers inclus dans un repertoire...
 
Ce message a été identifié comme étant une solution!

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas