Microsoft 365 Modifier formule copier coler

Bob 31

XLDnaute Occasionnel
Bonjour
J'ai une formule d'un copié coller d'une feuille d'un classeur "salariés" vers une autre classeur "Recap annuel" sur une autre feuille.

Formule ci après :
='\\SrvAldo\drh\ABADIE ALBERT\[ABADIE ALBERT 2021.xlsx]MOIS'!C2

Je colle sur le classeur annuel un millier de lignes venant des classeurs salariés.
je souhaiterai modifier cette formule si c'est possible créant une référence année (cellule année : 2021) sur la feuille du classeur Recap annuel afin que l'année prochaine
en changeant cette référence année (2022) cela me change les liens et que cela aille chercher le classeur [ABADIE ALBERT 2022.xlsx].
Si je peux aussi indexer de la même façon le nom et le prénom du salarié je suis preneur.

Merci d'avance.
 

Bob 31

XLDnaute Occasionnel
Je me suis mal exprimé tout à l'heure

Je souhaiterai modifier mon chemin pour effectuer une copie cela avec une programmation avec des données depuis le feuille ou j'effectue le coller, en sachant que j'ai des fichiers nommés (='\\SrvAldo\drh\ABADIE ALBERT\[ABADIE ALBERT 2021.xlsx], ='\\SrvAldo\drh\AVIER MARIE\[AVIER MARIE 2021.xlsx], ='\\SrvAldo\drh\DESE AUDREY\[DESE AUDREY 2021.xlsx], ='\\SrvAldo\drh\TENEUR PATRICK\[TENEUR PATRICK 2021.xlsx]

C2 ='\\SrvAldo\drh\ABADIE ALBERT\[ABADIE ALBERT 2021.xlsx]ANNUEL'!C2

Programmer le chemin avec le tableau joint :
le NOM PRENOM identifié par la cellule B2 ligne 2 PUI B3 Ligne 3 etc
et l'année identifiée par la cellule AI1 à figer de la feuille ANNEE ou je veux coller les chemins du collage

='\\SrvAldo\drh\B2\[B2 AI1.xlsx]ANNUEL'!C2

Merci d'avance
 

Pièces jointes

  • Classeur 1.xlsm
    128.1 KB · Affichages: 16

Dranreb

XLDnaute Barbatruc
Bonsoir.
La seule possibilité relativement simple et rapide que je vois c'est de passer par la modification des liaisons.
La base c'est cette procédure :
VB:
Sub ModifierLiaisons()
   For Each X In ThisWorkbook.LinkSources
      ThisWorkbook.ChangeLink X, Replace(X, "2020", "2021"), xlLinkTypeExcelLinks
      Next X
   End Sub
À tester dans un premier temps.
Voir après comment rendre variable l'année à changer.
Sinon il reste possible de changer les FormulaR1C1 des paquets de 12 lignes et 30 colonnes à partir de la cellule C2 en utilisant chaque fois le NOM PRENOM en B2 :
Code:
Sub MettreFormules()
   Const Année = "2021"
   Dim L&, NomPré
   L = 2
   Do: NomPré = Cells(L, "B").Value: If VarType(NomPré) <> vbString Then Exit Do
      Cells(L, "C").Resize(12, 30).FormulaR1C1 = "='\\SrvAldo\drh\" & NomPré _
         & "\[" & NomPré & " " & Année & ".xlsx]ANNUEL'!R[" & 2 - L & "]C"
      L = L + 12
      Loop
   End Sub
 
Dernière édition:

Bob 31

XLDnaute Occasionnel
Bonsoir.
La seule possibilité relativement simple et rapide que je vois c'est de passer par la modification des liaisons.
La base c'est cette procédure :
VB:
Sub ModifierLiaisons()
   For Each X In ThisWorkbook.LinkSources
      ThisWorkbook.ChangeLink X, Replace(X, "2020", "2021"), xlLinkTypeExcelLinks
      Next X
   End Sub
À tester dans un premier temps.
Voir après comment rendre variable l'année à changer.
Sinon il reste possible de changer les FormulaR1C1 des paquets de 12 lignes et 30 colonnes à partir de la cellule C2 en utilisant chaque fois le NOM PRENOM en B2 :
Code:
Sub MettreFormules()
   Const Année = "2021"
   Dim L&, NomPré
   L = 2
   Do: NomPré = Cells(L, "B").Value: If VarType(NomPré) <> vbString Then Exit Do
      Cells(L, "C").Resize(12, 30).FormulaR1C1 = "='\\SrvAldo\drh\" & NomPré _
         & "\[" & NomPré & " " & Année & ".xlsx]ANNUEL'!R[" & 2 - L & "]C"
      L = L + 12
      Loop
   End Sub
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16