Mettre en pause une macro d'importation de lien hypertexte

Bonjour à tous !

Avant toute chose, je tient à prévenir toutes les âmes charitables qui accepteront de m'aider que je ne suis qu’un débutant en VBA !

Je travaille en ce moment sur un tableur permettant la traçabilité des demandes faites à service (d'entreprise).

Via un UserForm, l'utilisateur rempli les différents critères, puis valide via un bouton, ce qui retranscrit les informations saisies dans le tableau. Cependant, il est nécessaire d'inclure dans ce dernier un lien hypertexte généré à partir de son fichier PDF, situé sur un serveur. Pour chaque demande le lien change. Afin de satisfaire ce critère, il lui suffit alors de cliquer sur un bouton et de sélectionner le fichier dans la fenêtre qui s'ouvre, et le lien apparait automatiquement dans la colonne "i" .

Et c'est ici que se situ le problème... En effet, pour incrémenter les lignes du tableau une à une, j'utilise cette commande :

Private Sub CommandButton1_Click()
With ThisWorkbook.Worksheets("Feuil1")
With Sheets(1)
.Unprotect Password:=XXXXX
derlign = Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
            .Cells(derlign, 4).Value = Demandeur
            .Cells(derlign, 5).Value = Categorie
            .Cells(derlign, 6).Value = Machine
            .Cells(derlign, 7).Value = Priorite
            .Cells(derlign, 8).Value = Demande
            .Cells(derlign, 10).Value = Dessinateur
.Protect Password:=XXXXX
End With
End With

UserForm1.Hide
    End Sub

Mais le lien à inclure ne se situant pas dans cette dernière, le lien insincère automatiquement dans le tableau des que l'utilisateur valide le choix du fichier... Ce qui est problématique avec la fonction Derlign... Puisque automatiquement le lien se met une ligne au dessus que le reste des informations à fournir... Pour insérer le lien, j'utilise cette commande :

Private Sub inserer_click()
Dim wks As Worksheet
Dim LinksList As Range
derlign = Cells.Find("*", , , , xlByRows, xlPrevious).Row
With Sheets(1)
.Unprotect Password:=19982018
Set wks = ActiveSheet
Set LinksList = Cells(derlign, 9) 'Emplacement du fichier
    ChDrive "C:\"
    ChDir "C:\Users\"
    Filt = "PDF Files (*.pdf),*.pdf ," & _
           "All Files (*.*),*.*"
    FilterIndex = 1
    Title = "Selectionnez un fichier PDF"
    Filename = Application.GetOpenFilename _
        (FileFilter:=Filt, _
         FilterIndex:=FilterIndex, _
         Title:=Title)

    If Filename <> False Then
       wks.Hyperlinks.Add Anchor:=LinksList, _
       Address:=Filename, _
        TextToDisplay:=Filename
    Else
        MsgBox "Aucun fichié selectionné", vbCritical, "Erreur d'importation du fichier"
        Exit Sub
    End If
    .Protect Password:=19982018
End With
End Sub

Ma question est donc la suivante : D'après vous, comment puis-je faire en sorte que lorsque je valide le fichier PDF, celui-ci ne s’insère pas automatiquement dans le tableau, mais lorsque l'utilisateur appui sur le bouton "valider" de l'userForm...

Je tient à m'excuser si ma demande n'est pas très clair ou si je m'exprime mal, et j'essaierais de corriger cela si vous m'en faite la réflexion !

Merci d'avance à tous !

Bonsoir Sosa,

Pour ton bouton Insérer il faut juste demander la sélection du fichier

Perso j'utilise une fonction personnalisée

' Définir une variable public au début d'un module
Public sDosFic As String

Le code pour sélectionner le fichier avec la fonction

Private Sub inserer_click()
   Dim sFilter As String
    ' Définir le/les filtre(s)
    sFilter = "PDF Files (*.pdf),*.pdf , All Files (*.*),*.*"
    sDosFic = ChoixFichier("C:\Users\", "Selectionnez un fichier PDF", sFilter)
End Sub

Function ChoixFichier(DefaultPath As String, sTitre As String, Optional sFilter As String)
  ' LE filtre doit être du type : "BdD Communes (*.xlsx), *.xlsx"
  Dim fd As FileDialog, TabFilter() As String
  ' Initialiser les variables
  If Right(DefaultPath, 1) <> "\" Then DefaultPath = DefaultPath & "\"
  ' Initialiser l'intance du dialogue
  Set fd = Application.FileDialog(msoFileDialogFilePicker)
  With fd
    .Filters.Clear
    ' Si un filtre a été donné
    If sFilter <> "" Then
      TabFilter = Split(sFilter, ",")
      .Filters.Add TabFilter(0), Trim(TabFilter(1))
    End If
    .Title = sTitre
    .InitialFileName = DefaultPath
    If .Show = -1 Then
      ChoixFichier = fd.SelectedItems(1)
    End If
  End With
  Set fd = Nothing
End Function

Le code lors de la validation

Petite astuce avec laquelle j'ai vraiment moins de problème, le lien hypertexte je le créé avec la fonction

Private Sub Valider_click()
  ActiveCell.FormulaLocal = "=LIEN_HYPERTEXTE(""" & sDosFic & """;""" & sDosFic & """)"
End Sub

A+

Rechercher des sujets similaires à "mettre pause macro importation lien hypertexte"