Comparatif et selection de valeurs
j'ai finalement réuni sur une feuille mes liens hypertextes et mes valeurs à comparer, pour faire simple je compare ma colonne J avec ma colonne C. Mais là ca se complique :
j'aimerai récupérer les valeurs des autres colonnes, c'est à dire sélectionner le nom de l'onglet (Colonne K) lorsque ma comparaison est vrai mais la problème. impossible de sélectionner ma valeur onglet.
lorsqu'on récupère la valeur de l'onglet, je le sélectionne et j'aimerai insérer le lien hypertext (colonne B) sur la valeur correspondant à la cellule de la colonne J...
j'ai l'impression de ne pas etre très claire,
je fournis un fichier exemple
Merci d'avance pour vos idées.
Bonjour,
c'est peut être moi mais j'ai absolument rien compris au problème ^^"
je sais qu'il faut comparer, sélectionner , récupération de donnée et insertion mais a part sa ....
Bonjour Edlede.
En effet les explications sont confuses.
Je me doute qu'il faille travailler sur la feuille "_hyperlink à Suppr".
Après dis-moi si j'ai bien compris.
Pour chaque valeur de la colonne J tu souhaites savoir si elle existe dans la colonne C.
Le cas échéant, il faut enregistrer le lien de la colonne B, activer l'onglet situé en colonne K.
Ensuite nous recherchons à partir de [B25], la valeur de la colonne J et lui appliquer le lien hypertexte ?
Je n'ai pas pu m'empêcher de faire à mon goût :
Sub Ajouter_Lien()
Dim i&, l&, j&, d As Object, d1 As Object, d2 As Object, t(), c
'On enregistre le tableau dans un tableau virtuel.
With Sheets("_hyperlink à Suppr")
l = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
t = .Range(.Cells(2, 1), .Cells(l, 11)).Value
End With
'On enregistre dans un dictionnaire toutes les valeurs de la colonne C.
'Et le lien hypertexte s'y référant.
Set d = CreateObject("Scripting.Dictionary")
For i = LBound(t) To UBound(t)
d(t(i, 3)) = t(i, 2)
Next i
'On boucle la colonne J pour vérifier si la valeur existe et également si la feuille K existe
'Le cas échéant, nous enregistrons la valeur J, l'onglet K et le lien B
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
j = 1
For i = LBound(t) To UBound(t)
If d.exists(t(i, 10)) And OngletExiste(CStr(t(i, 11))) Then
d1(t(i, 11)) = ""
d2(t(i, 10)) = d(t(i, 10))
j = j + 1
End If
Next i
'On boucle les onglets contenant des ajouts de lien.
For Each c In d1.keys
With Sheets(CStr(c))
i = 26
Do While .Cells(i, 2).Value <> ""
If d2.exists(.Cells(i, 2).Value) Then
.Hyperlinks.Add Anchor:=.Cells(i, 2), Address:=d2(.Cells(i, 2).Value)
Debug.Print d2(.Cells(i, 2).Value)
End If
i = i + 1
Loop
End With
Next c
End Sub
Function OngletExiste(Nom As String) As Boolean
On Error Resume Next
OngletExiste = False
OngletExiste = Not Sheets(Nom) Is Nothing
End Functionc'est plus claire quand tu explique mais c'est bien ca! je test le code dès que possible,
Merci pour les réponses si rapide
encore bravo c'est juste ce qu'il me fallait
Merci et à bientôt,