Carnage029
XLDnaute Occasionnel
Bonjour a tous
J'ai developpe un gros fichier Excel qui va chercher des informations dans plusieurs autres fichiers Excel.
Apres avoir developpe (VBA) une interface (userform) qui permet de changer les fichiers "d'origine" avec des donnees plus recentes (par exemple chaque mois).
Le probleme principal que j'ai rencontre est le fait que l'index de mes liens change par moment et sans raison apparante (en tout cas je n'ai pas compris/trouve la cause).
Le processus suivi est le suivant :
A l'ouverture de mon "Master" excel, je recupere les liens dans une range de cellules comme suit:
Puis a l'aide d'un userform l'utilisateur peut modifier ces liens
Le probleme etant que si lors du printlink les liens ont changes d'index la deuxieme procedure ne fonctionne plus, existe t'il un moyen de s'assurer que les liens sont dans le "bon" ordre ? Par exemple en recuperant le full path d'un lien d'une cellule en particulier ?
Merci a tous de votre aide
Carnage029
J'ai developpe un gros fichier Excel qui va chercher des informations dans plusieurs autres fichiers Excel.
Apres avoir developpe (VBA) une interface (userform) qui permet de changer les fichiers "d'origine" avec des donnees plus recentes (par exemple chaque mois).
Le probleme principal que j'ai rencontre est le fait que l'index de mes liens change par moment et sans raison apparante (en tout cas je n'ai pas compris/trouve la cause).
Le processus suivi est le suivant :
A l'ouverture de mon "Master" excel, je recupere les liens dans une range de cellules comme suit:
Code:
Sub PrintLinks()
Dim v() As Variant, i As Integer
v = ThisWorkbook.LinkSources(XlLink.xlExcelLinks)
For i = 1 To UBound(v)
ThisWorkbook.Sheets("Mapping").Cells(i + 1, 9) = v(i)
Next i
End Sub
Puis a l'aide d'un userform l'utilisateur peut modifier ces liens
Code:
' Premier lien
If Me.Label2.Caption <> Sheets("Mapping").Cells(2, 9).Text Then
ActiveWorkbook.ChangeLink Name:= _
Sheets("Mapping").Cells(2, 9).Text _
, NewName:=Me.Label2.Caption, Type:= _
xlExcelLinks
Application.Calculate
If Not Application.CalculationState = xlDone Then
DoEvents
End If
Sheets("Mapping").Cells(2, 9).Value = Label2.Caption
End If
'Deuxieme lien
If Me.Label3.Caption <> Sheets("Mapping").Cells(3, 9).Text Then
ActiveWorkbook.ChangeLink Name:= _
Sheets("Mapping").Cells(3, 9).Text _
, NewName:=Me.Label3.Caption, Type:= _
xlExcelLinks
Application.Calculate
If Not Application.CalculationState = xlDone Then
DoEvents
End If
Sheets("Mapping").Cells(3, 9).Value = Label3.Caption
End If
'Troisieme lien
If Me.Label5.Caption <> Sheets("Mapping").Cells(4, 9).Text Then
ActiveWorkbook.ChangeLink Name:= _
Sheets("Mapping").Cells(4, 9).Text _
, NewName:=Me.Label5.Caption, Type:= _
xlExcelLinks
Application.Calculate
If Not Application.CalculationState = xlDone Then
DoEvents
End If
Sheets("Mapping").Cells(4, 9).Value = Label5.Caption
End If
'Template
If Me.Label7.Caption <> Sheets("Mapping").Cells(6, 9).Text Then
Sheets("Mapping").Cells(6, 9).Value = Label7.Caption
End If
Le probleme etant que si lors du printlink les liens ont changes d'index la deuxieme procedure ne fonctionne plus, existe t'il un moyen de s'assurer que les liens sont dans le "bon" ordre ? Par exemple en recuperant le full path d'un lien d'une cellule en particulier ?
Merci a tous de votre aide
Carnage029