modifier une liaison

candido57

XLDnaute Occasionnel
Bonjour,

Je souhaiterais mofifier ma liaison à ma guise en changeant le n° de semaine .
Je voudrais noter dans une cellule par exemple sur A1 sem09 et que toutes mes liaisons changent .

Est ce possible ??
Voici ma liaison

Merci beaucoup

='I:\Operations\Production\General\Analyse\DWOR\Tous les fichiers DWOR 2019\[Jnr19total.xls]sem09'!V131
 

job75

XLDnaute Barbatruc
Bonjour candidos57,

A placer dans le code de la feuille concernée par la cellule A1 (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sem$, w As Worksheet
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual 'pour accélérer
On Error Resume Next 'sécurité
sem = LCase([A1])
If Not sem Like "sem##" Then sem = "sem01": [A1] = sem
For Each w In Worksheets
    w.Cells.Replace "]*'", "]" & sem & "'", xlPart
Next
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
A+
 

candido57

XLDnaute Occasionnel
Merci job75,

Ca fonctionne, mais toutes les liaisons passe en sem01, ce que je veux, c'est que la macro aille chercher se que je note manuellement en A1 par exemple sem09 et que la macro fasse son travail en changeant toutes les liaisons

Merci beaucoup
 

candido57

XLDnaute Occasionnel
Bonjour Job75,

Oui ça fonctionne, mais le souci, c'est que j'ai plusieurs liaisons avec sem09 ( voir ci-dessous). Donc il y a des fenêtres pour modifier la liaisons et il faut cliquer sur la semaine. Ce que je souhaite, c'es de faire un remplacement sur toutes les liaisons sans distinction.

'I:\Operations\Production\General\Analyse\DWOR\Tous les fichiers DWOR 2019\[Jnr19total.xls]sem09'!W139
'\\FNOVLUX01\Vol2\Users\Operations\Production\VS\Production\En cours\[PrVs1902.xls]SEM 09'!$D$100

En tout cas merci beaucoup, c'est sympa
 

job75

XLDnaute Barbatruc
Bonjour candido57,

Je me demande bien ce que vous fabriquez, toutes les liaisons sont bien sûr modifiées...

Si l'on veut traiter seulement une plage de la feuille l'adaptation est évidente :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sem$
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual 'pour accélérer
On Error Resume Next 'sécurité
sem = LCase([A1])
If Not sem Like "sem##" Then sem = "sem01": [A1] = sem
[B3:H44].Replace "]*'", "]" & sem & "'", xlPart
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Liaisons(2).xlsm
    26.1 KB · Affichages: 7

Statistiques des forums

Discussions
312 083
Messages
2 085 189
Membres
102 809
dernier inscrit
Sandrine83