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.
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.
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...
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).
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).
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
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
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
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?