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 :

image

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 :

..\..\Documentsfile:///..\..\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)

infobulle

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
Rechercher des sujets similaires à "colonne vide envoie mail"