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 SubMais 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 SubMa 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 StringLe 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 FunctionLe 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 SubA+