Modif de liens hypertexte en masse
Fermé
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
-
Modifié par Beeloobop le 15/07/2010 à 09:45
Beeloobop Messages postés 63 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 4 décembre 2010 - 15 juil. 2010 à 15:47
Beeloobop Messages postés 63 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 4 décembre 2010 - 15 juil. 2010 à 15:47
A voir également:
- Excel modifier lien hypertexte en masse
- Modifier liste déroulante excel - Guide
- Modifier dns - Guide
- Lien url - Guide
- Renommer fichier en masse - Guide
- Créer un lien pour partager des photos - Guide
8 réponses
Mihawk
Messages postés
4315
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
846
15 juil. 2010 à 09:43
15 juil. 2010 à 09:43
En utilisant VBA tu dois pouvoir faire ça facilement dans une boucle !
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
11
15 juil. 2010 à 10:08
15 juil. 2010 à 10:08
Bonjour et merci pour ta réponse rapide!
J'ai testé une petite boucle (je m'épate moi-même, ya 1 semaine, vba était une chose étrange et quasi-inconnue héhéhé ):
Sub modif_lien_hypertexte()
Dim i As Integer
Dim Lg%
Lg = Range("A7").End(xlDown).Row
For i = 7 To Lg
Range("A" & i).Select
Selection.Hyperlinks(1).Address = Range("A" & i).Value
Next i
End Sub
ça marche jusqu'à ce qu'il rencontre une cellule à laquelle aucun dossier de photos ne correspond, là il s'arrête. Saurais-tu comment faire pour qu'il continue, qu'il passe au i suivant? ou alors qu'il fasse apparaître une input box pour pouvoir faire le lien manuellement et cliquer ensuite pour reprendre au i suivant?
Merci!
J'ai testé une petite boucle (je m'épate moi-même, ya 1 semaine, vba était une chose étrange et quasi-inconnue héhéhé ):
Sub modif_lien_hypertexte()
Dim i As Integer
Dim Lg%
Lg = Range("A7").End(xlDown).Row
For i = 7 To Lg
Range("A" & i).Select
Selection.Hyperlinks(1).Address = Range("A" & i).Value
Next i
End Sub
ça marche jusqu'à ce qu'il rencontre une cellule à laquelle aucun dossier de photos ne correspond, là il s'arrête. Saurais-tu comment faire pour qu'il continue, qu'il passe au i suivant? ou alors qu'il fasse apparaître une input box pour pouvoir faire le lien manuellement et cliquer ensuite pour reprendre au i suivant?
Merci!
Mihawk
Messages postés
4315
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
846
15 juil. 2010 à 10:20
15 juil. 2010 à 10:20
Qu'entends-tu par "aucun dossier ne correspond" ? Je croyais que le lien était fait en fonction du nom de la cellule... Cela voudrait dire que ta cellule n'a pas de nom ?
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
11
15 juil. 2010 à 10:29
15 juil. 2010 à 10:29
Non excuse moi je me suis mal expliquée.
La cellule contient bien une valeur mais il n'y a pas de dossier portant son nom :
- soit le nom est différent : erreur de ma part à résoudre grâce éventuellement à cette fameuse message box (plutot que inputbox, non?) qui reprendrait la macro suite à mes modifs
- soit il n'y a pas du tout de dossier de photos : il faudrait faire une recherche pour voir s'il existe un fameux dossier de photos, s'il y en a une, faire le lien hypertexteet s'il n'y en a pas passer au i suivant. Je pensais donc rajouter une condition if, mais je ne sais pas trop comment la formuler... je cherche je cherche ^^
La cellule contient bien une valeur mais il n'y a pas de dossier portant son nom :
- soit le nom est différent : erreur de ma part à résoudre grâce éventuellement à cette fameuse message box (plutot que inputbox, non?) qui reprendrait la macro suite à mes modifs
- soit il n'y a pas du tout de dossier de photos : il faudrait faire une recherche pour voir s'il existe un fameux dossier de photos, s'il y en a une, faire le lien hypertexteet s'il n'y en a pas passer au i suivant. Je pensais donc rajouter une condition if, mais je ne sais pas trop comment la formuler... je cherche je cherche ^^
Mihawk
Messages postés
4315
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
846
15 juil. 2010 à 10:36
15 juil. 2010 à 10:36
Il faut utiliser la fonction "Dir" pour tester si un dossier existe !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
11
15 juil. 2010 à 10:49
15 juil. 2010 à 10:49
J'ai modifié mon code comme suit (merci ;) je sens que j'approche!) :
Sub modif_lien_hypertexte()
Dim i As Integer
Dim Lg%
Lg = Range("A7").End(xlDown).Row
For i = 7 To Lg
If Dir(Range("A" & i).Value) <> "" Then
Range("A" & i).Select
Selection.Hyperlinks(1).Address = Range("A" & i).Value
End If
Next i
End Sub
Le problème c'est qu'il ne va pas me chercher les dossier de photos dans le bon emplacement. Comment faire pour lui dire de chercher dans le même dossier que le classeur excel? ou de lui demander de chercher dans un dossier spécifique?
Merci!
Sub modif_lien_hypertexte()
Dim i As Integer
Dim Lg%
Lg = Range("A7").End(xlDown).Row
For i = 7 To Lg
If Dir(Range("A" & i).Value) <> "" Then
Range("A" & i).Select
Selection.Hyperlinks(1).Address = Range("A" & i).Value
End If
Next i
End Sub
Le problème c'est qu'il ne va pas me chercher les dossier de photos dans le bon emplacement. Comment faire pour lui dire de chercher dans le même dossier que le classeur excel? ou de lui demander de chercher dans un dossier spécifique?
Merci!
Mihawk
Messages postés
4315
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
846
15 juil. 2010 à 10:58
15 juil. 2010 à 10:58
Normalement tu dis plutôt : if Dir("C:/mondossier/modossier2")
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
11
15 juil. 2010 à 11:10
15 juil. 2010 à 11:10
Comme ça?
If Dir("C:\Inventaire Botanique\" & Range("A" & i).Value) <> "" Then
Le mondossier2 varie pour chaque ligne donc il faut bien mettre un i dans la condition if non?
Il n'établit toujours pas de lien :/ pourtant il ne m'affiche jamais de message d'erreur... aaaarrrgg
If Dir("C:\Inventaire Botanique\" & Range("A" & i).Value) <> "" Then
Le mondossier2 varie pour chaque ligne donc il faut bien mettre un i dans la condition if non?
Il n'établit toujours pas de lien :/ pourtant il ne m'affiche jamais de message d'erreur... aaaarrrgg
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
11
15 juil. 2010 à 12:22
15 juil. 2010 à 12:22
Bon bé après moultes recherches je suis arrivée à ça :
Sub modif_lien_hypertexte()
Dim Lg%
Lg = Range("A7").End(xlDown).Row
Dim Nom
For i = 7 To Lg
Range("a" & i).Select
Nom = Range("A" & i).Value
If Nom <> "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="C:\Inventaire Botanique (PC)\" & Nom, TextToDisplay:=Nom
End If
Next
End Sub
Et ça marche!!!
Il me reste plus qu'à trouver un moyen pour qu'il ne me souligne pas et ne me colore pas en bleu les cellules pour lesquelles le lien hypertexte n'est pas valable. Mais ça reste du détail!
Aaaah ça va un peu mieux!
Merci pour ton aide précieuse Mihawk!
Beeloobop
Sub modif_lien_hypertexte()
Dim Lg%
Lg = Range("A7").End(xlDown).Row
Dim Nom
For i = 7 To Lg
Range("a" & i).Select
Nom = Range("A" & i).Value
If Nom <> "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="C:\Inventaire Botanique (PC)\" & Nom, TextToDisplay:=Nom
End If
Next
End Sub
Et ça marche!!!
Il me reste plus qu'à trouver un moyen pour qu'il ne me souligne pas et ne me colore pas en bleu les cellules pour lesquelles le lien hypertexte n'est pas valable. Mais ça reste du détail!
Aaaah ça va un peu mieux!
Merci pour ton aide précieuse Mihawk!
Beeloobop
Mihawk
Messages postés
4315
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
846
15 juil. 2010 à 13:37
15 juil. 2010 à 13:37
De rien, je n'ai pas fait grand chose...
Le problème des liens, c'est qu'il se soulignent automatiquement en bleu comme ça... Il faudrait carrément écrire, dans le cas où il ne faut pas mettre de lien, un texte ou un symbole bidon genre '#'.
Le problème des liens, c'est qu'il se soulignent automatiquement en bleu comme ça... Il faudrait carrément écrire, dans le cas où il ne faut pas mettre de lien, un texte ou un symbole bidon genre '#'.
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
11
15 juil. 2010 à 14:11
15 juil. 2010 à 14:11
Ben le problème c'est que je voudrais garder la valeur de la cellule telle qu'elle est déjà.
Il s'agit d'une liste de plante avec lien vers les photos quand on clique sur le nom (si les photos ont pu être prises! D'où dans ce cas pas de dossier photo). Mais ce n'est pas parce que je n'ai pas de photo que je veux pour autant supprimer le nom ou la ligne de la plante... :)
Il s'agit d'une liste de plante avec lien vers les photos quand on clique sur le nom (si les photos ont pu être prises! D'où dans ce cas pas de dossier photo). Mais ce n'est pas parce que je n'ai pas de photo que je veux pour autant supprimer le nom ou la ligne de la plante... :)
Mihawk
Messages postés
4315
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
846
15 juil. 2010 à 14:26
15 juil. 2010 à 14:26
Bah :
Si (le dossier existe) alors écrire le lien Sinon laisser le nom de la plante tel quel Fin si
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
11
Modifié par Beeloobop le 15/07/2010 à 15:35
Modifié par Beeloobop le 15/07/2010 à 15:35
Moui... Tout à fait d'accord avec toi! Mais c'est plus facile à dire en français qu'à faire en vba ;)
Pour le moment ma boucle en est à ce stade (stade qui ne fonctionne pas) :
For i = 7 To Lg
Range("A" & i).Select
Nom = Range("A" & i).Value
If Nom <> "" Then
If Dir("C:\Inventaire Botanique (PC)\" & Nom) <> "" Then ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="C:\Inventaire Botanique (PC)\" & Nom, TextToDisplay:=Nom
End If
End If
Next
Je crois que j'ai un problème avec la "fonction" (si ce sont bien des fonctions sur vba...) Dir
Donc peut-être un problème avec mon nom de fichier. Mais c'est bel et bien le bon!
arrrgghh (bis)
Pour le moment ma boucle en est à ce stade (stade qui ne fonctionne pas) :
For i = 7 To Lg
Range("A" & i).Select
Nom = Range("A" & i).Value
If Nom <> "" Then
If Dir("C:\Inventaire Botanique (PC)\" & Nom) <> "" Then ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="C:\Inventaire Botanique (PC)\" & Nom, TextToDisplay:=Nom
End If
End If
Next
Je crois que j'ai un problème avec la "fonction" (si ce sont bien des fonctions sur vba...) Dir
Donc peut-être un problème avec mon nom de fichier. Mais c'est bel et bien le bon!
arrrgghh (bis)
Beeloobop
Messages postés
63
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
4 décembre 2010
11
15 juil. 2010 à 15:47
15 juil. 2010 à 15:47
YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHH
Je m'aime! J'aime internet et le monde entier!! (surtout ceux qui ont posé les mêmes questions que moi AVANT moi)
ça marche!! Voilà le code complet (s'il y en a que ça interresse à part moi :p )
Sub modif_lien_hypertexte()
'Crée une variable Lg qui est le nombre de lignes effectives du tableau d'inventaire
Dim Lg%
Lg = Range("A7").End(xlDown).Row
'Crée une variable Nom
Dim Nom
'Met en place les liens hypertexte
For i = 7 To Lg 'Fait une boucle de la ligne 7 à la ligne de valeur Lg
Range("A" & i).Select 'Selectionne la cellule de la colonne A à la ligne i
Nom = Range("A" & i).Value 'Donne à Nom la valeur de cette cellule
If Nom <> "" Then 'Si la valeur est non nulle alors fait le test suivant
'If Dir("C:\Inventaire Botanique (PC)\" & Nom) <> "" Then 'S'il existe un fichier au nom correspondant
If Dir("C:\Inventaire Botanique (PC)\" & Nom, vbDirectory) <> "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="C:\Inventaire Botanique (PC)\" & Nom, TextToDisplay:=Nom 'alors met un lien hypertexte
End If
End If
Next
Range("A7").Select
End Sub
il fallait mettre vbdirectory pour qu'il cherche un dossier!!! Aaaaaah
Je vais pouvoir faire enfin autre chose!!
Merci encore Mihawk! Tu m'auras pousser à réfléchir et à faire par moi-même! Quoi de plus joussif? :)
Je m'aime! J'aime internet et le monde entier!! (surtout ceux qui ont posé les mêmes questions que moi AVANT moi)
ça marche!! Voilà le code complet (s'il y en a que ça interresse à part moi :p )
Sub modif_lien_hypertexte()
'Crée une variable Lg qui est le nombre de lignes effectives du tableau d'inventaire
Dim Lg%
Lg = Range("A7").End(xlDown).Row
'Crée une variable Nom
Dim Nom
'Met en place les liens hypertexte
For i = 7 To Lg 'Fait une boucle de la ligne 7 à la ligne de valeur Lg
Range("A" & i).Select 'Selectionne la cellule de la colonne A à la ligne i
Nom = Range("A" & i).Value 'Donne à Nom la valeur de cette cellule
If Nom <> "" Then 'Si la valeur est non nulle alors fait le test suivant
'If Dir("C:\Inventaire Botanique (PC)\" & Nom) <> "" Then 'S'il existe un fichier au nom correspondant
If Dir("C:\Inventaire Botanique (PC)\" & Nom, vbDirectory) <> "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="C:\Inventaire Botanique (PC)\" & Nom, TextToDisplay:=Nom 'alors met un lien hypertexte
End If
End If
Next
Range("A7").Select
End Sub
il fallait mettre vbdirectory pour qu'il cherche un dossier!!! Aaaaaah
Je vais pouvoir faire enfin autre chose!!
Merci encore Mihawk! Tu m'auras pousser à réfléchir et à faire par moi-même! Quoi de plus joussif? :)