Colonne non vide -> envoie mail
Bonjour,
Merci pour l'astuce du module Mail
J'ai mis à jour le code dans mon "fichier de travail" car le tien bloque au niveau sécurité
ça me recopie le nom du lien dans la colonne U et non le chemin du lien
En plus ça modifie la colonne U aléatoirement et non à chaque modification
Y a t il besoin de ça?
'# lien colonne R vers colonne U
Application.EnableEvents = False
For Each h In ActiveSheet.Hyperlinks
If h.Range.Column = 18 Then
Cells(h.Range.Row, 21).Value = h.Address
Cells(h.Range.Row, 22).Value = "file:///" & h.Address
End If
Next h
Application.EnableEvents = True
la c'est ton code :
Dim AffectedRange As Range
Dim Cell As Range
Dim Arr
Dim LienH
' Spécifiez la plage concernée (colonne R)
derlign = Cells(Rows.Count, 1).End(xlUp).Row
Set AffectedRange = Range("R3:R" & derlign)
If Not Intersect(Target, AffectedRange) Is Nothing Then
Application.EnableEvents = False ' Désactiver les événements pour éviter une boucle infinie
' Parcourez les cellules modifiées
'For Each Cell In Intersect(Target, AffectedRange)
For Each h In Worksheets(1).Hyperlinks
LienH = h.Address
MsgBox LienH
Cells(h.Range.Row, h.Range.Column + 3).Value = LienH
'Cell.Offset(0, 3).Value = LienH
Next h
'Next
End If
Dans MsgBox LienH ça affiche bien le nom est nom le chemin "file:/// etc etc"
en fait le but est de récupérer la case u avec le chemin pour pouvoir créer le lien hypertext dans le mail
Peut être connais tu une méthode plus simple
merci en tout cas j'apprend plein de truc
Bonjour,
On recommence du début, (trop de commentaires dans ton fichier, j'ai du louper des trucs)
Test dans un nouveau module :
Sub test()
'# lien colonne R vers colonne U
Application.EnableEvents = False
For Each h In ActiveSheet.Hyperlinks
If h.Range.Column = 18 Then
Cells(h.Range.Row, 21).Value = h.Address
Cells(h.Range.Row, 22).Value = "file:///" & h.Address
End If
Next h
Application.EnableEvents = True
End Sub
En colonne U et V tu as les noms "COLIS XXX" ou les liens comme ça :
La partie dans "Private Sub Worksheet_Change(ByVal Target As Range)"
If Not Intersect(Target, AffectedRange) Is Nothing Then
Application.EnableEvents = False ' Désactiver les événements pour éviter une boucle infinie
' Parcourez les cellules modifiées
'For Each Cell In Intersect(Target, AffectedRange)
For Each h In Worksheets(1).Hyperlinks
LienH = h.Address
MsgBox LienH
Cells(h.Range.Row, h.Range.Column + 3).Value = LienH
'Cell.Offset(0, 3).Value = LienH
Next h
'Next
End If
Supprime pour le moment.
Bonjour,
Donc oui ça fonctionne en quelques sortes mais c'est pas ça que j'attendais
j'ai ça :
..\..\Documents | file:///..\..\Documents |
mais je voudrais le lien "réel" qui pointe vers file:d:\users\nom\Documents qu'on peut voir dans l'info bulle : (ou vers un serveur le cas échéant)
car "file:///..\..\Documents" ça ne fonctionnera pas car ça ne pointera vers rien même si on le transforme en "lien"
Merci
Il faut qu'on confirme un truc,
Tu veux en colonne U le lien hypertexte de la colonne R en texte.
Mais un lien actif sur ton mail
Si c'est le cas test ce fichier,
Sinon je ne vois pas l'interet de mettre un lien actif en colonne U qui serait le même que la colonne R
Oui c'est ça! après ma manière d'abordé le problème n'est peut etre pas la bonne mais le but est d'avoir le lien actif dans le mail.
donc je me disais de récupérer le texte du lien en colonne U, puis après de remettre U dans mon mail avec Arr(1, 19) et recréer un "lien" pour le rendre dynamique
:)
Bonjour,
Je ne sais pas si tu as testé le dernier fichier,
Ton "Arr(1, 19)" devrait etre "Arr(1,21)" pour la colonne U
J'ai donc ajouté dans les différents mails
"<br><a href=" & Arr(1, 21) & ">lien</a>" & _
Modifié tes limites de Arr dans "Worsheet_change"
'# Arr récupère les données de la ligne de 1 à 21 (colonne A à U)
Arr = Range(Cells(Target.Row, 1), Cells(Target.Row, 21)).Value
Et fait une mise a jour du lien en colonne U suivant la cellule de ligne modifié ("worksheet_change")
If Cells(Target.Row, 18).Hyperlinks.Count > 0 Then
Application.EnableEvents = False
Cells(Target.Row, 21).Value = Hyperlinks(1).Address
Application.EnableEvents = True
End If