Demande automatique de création d'un lien Hypertexte excel 2010

Bonjour,

J'explique, je suis en train de créer un Tableau de Bord excel pour mon Entreprise qui doit être utilisé par tous mes collaborateurs.

Le but étant de demander à l'utilisateur du Tableur d'intégrer un lien hypertexte lorsque celui-ci possède le fichier

Exemple: Nous démarrons un projet mais le contrat n'est pas signé
Dans la cellule A1 se trouve la mention : :"Date signature contrat"
La cellule A2 nous permet de renseigner la date à laquelle nous avons reçu le contrat signé

J'aimerais qu'à partir du moment ou l'on rentre la date, excel demande d'ajouter un lien hypertexte soit dans la cellule A1 soit dans la cellule A3 afin d'accéder au contrat signé au format PDF

J'espère avoir été compréhensible,

Merci d'avance.

11 réponses

  1. Bonjour Bouhi76

    Un message qui s'affiche avec une macro à mettre dans le worksheet de la feuille concernée (ALT+F11 pour ouvrir l'éditeur, sélectionner par double-clic la feuille dans l'arborescence, copier-coller la macro dans la page blanche)
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing Then
    If Not IsDate(Range("A2")) Then Exit Sub
    MsgBox ("Veuillez mettre dans la cellule A3 un lien hypertexte vers le PDF du contrat" & Chr(10) & "              (Selectionner A3 et faire Ctrl +K)")
    End If
    End Sub


    Cdlmnt
    Via
    0
    1. Super !! Par contre comment l'appliquer à plusieurs cellule j'ai essayé A1;A15 sans résultat
      0
    2. @Boubi76Re,

      Si tu veux l'appliquer à plusieurs cellules il faut modifier la 1ere ligne qui vérifie la cellule dans laquelle une valeur est modifiée :
      Par exemple pour déclencher lors de l'entrée d'une date dans la cellule A2 ou la cellule A5 ou la cellule A8
      If Not Intersect(Target, Range("A2", "A5","A8")) Is Nothing Then
      Il faut aussi modifier la ligne suivante ainsi (qui vérifie que c'est bien une date qui a été entrée, ce qui évité l'affichage du message si on efface une date pour la corriger par exemple)
      If Not IsDate(Target) Then Exit Sub

      Cdlmnt
      Via
      0
    3. J'ai essayé ça m'indique:

      "Erreur de compilation:
      Attendu: séparateur de liste ou )"
      Il me surligne le then à la fin de la première ligne , j'ai essayé d'ajouter des parenthèse ça ne fonctionne pas
      0
    4. @Boubi76Essaie cette macro :
      Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect(Target, Range("A2")) Is Nothing Or Not Intersect(Target, Range("A5")) Is Nothing Or Not Intersect(Target, Range("A8")) Is Nothing Then
      If Not IsDate(Target) Then Exit Sub
      MsgBox ("Veuillez mettre dans cette cellule un lien hypertexte vers le PDF du contrat" & Chr(10) & "(Ctrl +K)")
      End If
      End Sub
      


      Cdlmnt
      Via
      0
    5. @via55Yes ça fonctionne merci ! Faut juste que je fasse ça pour les 15 cellules correspondant ça va faire un truc chargé mais c'est déjà super que ça fonctionne !!

      Merci via55
      0
  2. Personne pour mon message d'erreur ? :(

    Boubi76 - 24 avril 2015 à 08:39
    J'ai essayé ça m'indique:

    "Erreur de compilation:
    Attendu: séparateur de liste ou )"
    Il me surligne le then à la fin de la première ligne , j'ai essayé d'ajouter des parenthèse ça ne fonctionne pas
    0
    1. Je suppose que si je veux faire la même chose avec des nombre à la place de date je met If Not IsNumber ?
      0
      1. Je vais être insistant mais là ça se corse j'ai 10 colonnes différentes avec chacune 40 colonnes dans lesquels je veux appliquer la même chose ^^
        0
        1. Via 55 tu est mon seul espoir ! ^^
          0
          1. Bonjour

            Désolé pas vu ton message hier
            C'est If Not IsNumeric

            Cdlmnt
            Via
            0
            1. Bonjour,

              Ok et si je veux l'appliquer a 10 colonnes de 40 cellules ? Car quand je saute une ligne là tout foire !

              Merci d'avance normalement c'est la dernière question
              0
              1. Re

                Les dix colonnes sont elles contigües ?
                Les cellules à traiter sont elles sur les mêmes lignes dans chaque colonne ?
                Envoie moi un exemple du fichier avec les 10 colonnes et en colorant toutes les cellules à traiter, ce sera plus clair

                Cdlmnt
                0


                1. Voilà une image tu me dit si c'est pas clair
                  0
                  1. Bonjour Boubi

                    Autant que j'arrive à voir (je n'arrive pas à zoomer sur ton image), tu as 3 colonnes qui déclenchent la demande de lien dans des colonnes différentes
                    Dans ce cas on peut gérer par colonne d'autant que le message à afficher est sans doute différent :
                    Private Sub Worksheet_Change(ByVal Target As Range)
                    
                    ' si hors lignes ou rien dans la cellule sortie sans rien faire
                    If Target.Row < 9 Or Target.Row > 40 Or Target.Value = "" Then Exit Sub
                    
                    ' si colonne D
                    If Target.Column = 4 Then
                    'selection de la cellule sur mm ligne en colonne K et message (à COMPLETER)
                    Cells(Target.Row, Target.Column + 7).Select
                    MsgBox ("Veuillez mettre dans cette cellule un lien hypertexte vers le ..........." & Chr(10) & "(Ctrl +K)")
                    Exit Sub
                    End If
                    
                    ' si colonne P
                    If Target.Column = 17 Then
                    ' si n'est pas une date, efface la cellule, message erreur et sortie
                    If Not IsDate(Target) Then Target.Value = "": Cells(Target.Row, Target.Column).Select: MsgBox ("Entrez une date SVP"): Exit Sub
                    ' selection de la cellule sur la mm ligne et colonne suivante et message (à COMPLETER)
                    Cells(Target.Row, Target.Column + 1).Select
                    MsgBox ("Veuillez mettre dans cette cellule un lien hypertexte vers le ......." & Chr(10) & "(Ctrl +K)")
                    Exit Sub
                    End If
                    
                    ' si colonne X
                    If Target.Column = 24 Then
                    ' si n'est pas une date, efface la cellule, message erreur et sortie
                    If Not IsDate(Target) Then Target.Value = "": Cells(Target.Row, Target.Column).Select: MsgBox ("Entrez une date SVP"): Exit Sub
                    ' selection de la cellule sur la mm ligne et colonne suivante et message (à COMPLETER)
                    Cells(Target.Row, Target.Column + 1).Select
                    MsgBox ("Veuillez mettre dans cette cellule un lien hypertexte vers le ......." & Chr(10) & "(Ctrl +K)")
                    Exit Sub
                    End If
                    
                    End Sub


                    Cdlmnt
                    Via
                    0
                    1. Ok merci beaucoup ! La traduction dans le worksheet de texte c'est quoi ?

                      Et question pour mon info, c'est possible faire la même démarche sauf que excel n'affiche pas un message d'erreur mais envoi directement la création du lien hypertexte ?
                      0
                    2. @Boubi76Re,

                      Pour vérifier si la valeur entrée dans la cellule cible est ;
                      une date : : If IsDate(Target) then si c'est une date alors
                      If Not IsDate(Target) then si ce n'est pas une date alors

                      un nombre : If IsNumeric(Target) then si c'est un nombre alors
                      If Not IsNumeric(Target) then si ce n'est pas un nombre alors

                      un texte : If Not IsNumeric(Target) then si ce n'est pas un nombre (donc c'est du texte) alors

                      Pour ouvrir directement la fenêtre de lien hypertexte par VBA je ne sais pas si c'est possible (on peut créer un lien hypertexte par VBA mais cela ne convient pas pour toi car tu ne connais pas à l'avance le chemin du fichier)
                      0
                  2. Pour l'instant ca ne fonctionne pas je me remet dessus demain

                    petite photo du message d'erreur
                    0