Microsoft 365 webbrowser

pelerin65

XLDnaute Occasionnel
Bonjour le forum,

voilà, j'ai réussi à créer un userform et alimenter un combobox

le tri se fait par la combobox dans la listebox

J'aimerai pouvoir cliquer sur la ligne de l'item de la listebox et que le document ouvre directement dans un web browser.

lirePDF.xlsm

j'ai recherchais sur le web une solution mais je ne trouve pas un fil avec cette idée (sauf le deuxième userform (nommé Form_PDF) dans le fichier mais qui liste tout le dossier ou sont stocker mes pdf)

les fichiers sont dans un dossier avec comme référence le N° RT

l'idée es de pouvoir avoir un tri par la ville de la combobox
 

Zon

XLDnaute Impliqué
Salut,

Déjà MERCI pour ta visionneuse PDF. TU as le plus difficile qui fonctionne pour ton projet.

Dans un premier temps , je te propose quelques pistes de réflexion , je suis un vieux contributeur qui n'est pas venu depuis une décennie , mais me replonger dans les Userform me donne envie.

remplissagecombo de FORMPDF te crée la liste des fichiers PDF du dossier sélectionné qu'on passe en
paramètre. Cela créé donc un tableau VBA Listbox1.List... Mais au lieu de créer une listbox , On créérait crée
un tableau VBA qu'on va stocker sur une feuille XL par exemple. Grace au N° RT présent sur la feuille XL et celui présent dans dans ta listbox , comme ListBox1 on devrait pouvoir faire le lien entre les 2 et faire apparaitre .

Est ce que je suis dans le vrai ???


A+++
Zon a vieilli...
 

pelerin65

XLDnaute Occasionnel
Bonjour Zon
mon idée principale est de pourvoir faire une recherche par la combobox pour trouver plus rapidement le PDF
donc dans le fichier
j'aimerais utilisé l'userform nommé userform
le premier je l'ai trouvé sur le net mais c est le procédé qui me gène, il n'y a pas de tri par recherche

1 on remplis la listebox
2 on recherche par combobox
3 on clic sur le pdf trouvé et l'ouvre dans le web browser
dans la mesure réalisable du vba
cordialement
 

Zon

XLDnaute Impliqué
Bonjour

pelerin65 j'ai bien compris ce que tu veux faire, mais je reformule ma question. On peut récupérer la liste des fichiers dans un tableau VBA ou sur feuille XL . Mais tes noms de fichiers , ils sont construits comment ?? afin de faire le lien entre les N° RT ???
 

Zon

XLDnaute Impliqué
Salut le forum, pelerin65,

Il y a tout ce qu'il faut dasn Form_PDF.

Quand tu cliques sur ta lisbox1 , on peut déclencher listbox1_clixk.

Tes numeros RT sont colonne 3 de ta plage XL , mais les listbox sont en base 0, donc en colonne 2 pour le VBA

Comme je ne sais toujours pas comment ton chemin des fichiers et la forme des noms de fichiers. voici une exemple à adapter.

Si mes fichiers sont stockés sous c:\ZON , par exemple c:\ZON\15922.pdf

recopies ce code en effaçant le code existant en dessous de UserForm_Initialize.


VB:
Private Sub ListBox1_Click()
    With ListBox1
        navigation_PDF "C:\ZON\" & CStr(.List(.ListIndex, 2)) & ".pdf"
    End With
End Sub



Private Sub navigation_PDF(fichier As String)
    fiche = "Fichier : " & fichier
    With WebBrowser1
    'Contrôle statut du WebBrowser au démarrage (égale à 4) puis affichage page en zoom 55%
    Range("A1") = .readyState
        '.Navigate fichier & "#zoom=16.5%&page=1&toolbar=0"
        .Navigate fichier & "#zoom=55%&page=1&toolbar=0"
    'Contrôle statut du WebBrowser après l'opération (égale à 1)
    Range("A1") = .readyState
    End With
End Sub

A+++
Le Kiki de Zon
 

pelerin65

XLDnaute Occasionnel
bonjour, Zon

Généralement, j'arrive à comprendre les codes vba mais là, je nage.

je remets mon fichier avec laquelle que je souhaiterai utiliser

j'ai supprimé l'initialise du vba

et la feuille ou sont les deux tableaux sont les fichiers recherchés et dons le dossier ils sont sous numéros de la troisième colonne (ex:122053°

1687852341064.png
le chemin du dossier est "C:\Loc Ng 23\04-Livrets de Lignes"

il y a une erreur dans le chemin et l'adresse internet

Pourquoi dans l'adresse internet???

merci de ton aide
 

Pièces jointes

  • lirePDF ().xlsm
    61.4 KB · Affichages: 4

Zon

XLDnaute Impliqué
Salut

Il te manque un antislash ... "C:\Loc Ng 23\04-Livrets de Lignes\"

Je te conseille de mettre une constante en haut de ton module , si tu venais à changer de chemin tu changes la constante, et surtout de tester l'existence du fichier

Colles ceci dans ton module 1

VB:
Public Const NomDossier$ = "C:\Loc Ng 23\04-Livrets de Lignes\"


Public Function FichierExiste(Fichier$) As Boolean
   FichierExiste = Len(Dir(Fichier)) > 0
End Function

Puis ceci dans ton userform

Code:
Private Sub ListBox1_Click()
   With ListBox1
       navigation_PDF NomDossier & CStr(.List(.ListIndex, 2)) & ".pdf"
   End With
End Sub

Private Sub navigation_PDF(Fichier As String)
   'SI le fichier n'existe pas alors on sort de la procédure
   If Not FichierExiste(Fichier) Then MsgBox " Pas de fichier trouvé": Exit Sub

   With WebBrowser1
    'Contrôle statut du WebBrowser au démarrage (égale à 4) puis affichage page en zoom 55%
      Range("A1") = .readyState
    
        '.Navigate fichier & "#zoom=16.5%&page=1&toolbar=0"
      .Navigate Fichier & "#zoom=55%&page=1&toolbar=0"
      
    'Contrôle statut du WebBrowser après l'opération (égale à 1)
      Range("A1") = .readyState
   End With
  
End Sub



A+++
 

pelerin65

XLDnaute Occasionnel
desolé de te rederanger,

Private Sub ComboBox1_Change()
Dim i As Single
Dim MyArray(500, 3)
ListBox1.ColumnCount = 3 'NB de colonne
ligne = 0
DerLigne = Range("A65535").End(xlUp).Row
For i = 2 To DerLigne
If Cells(i, 1) = ComboBox1 Then
MyArray(ligne, 0) = Cells(i, 1)
MyArray(ligne, 1) = Cells(i, 2)
MyArray(ligne, 2) = Cells(i, 3)
ligne = ligne + 1
End If
Next i
ListBox1.List() = MyArray
End Sub

Private Sub ListBox1_Click()
With ListBox1
navigation_PDF NomDossier & CStr(.List(.ListIndex, 2)) & ".pdf"
End With
End Sub

Private Sub navigation_PDF(Fichier As String)
'SI le fichier n'existe pas alors on sort de la procédure
If Not FichierExiste(Fichier) Then MsgBox " Pas de fichier trouvé": Exit Sub

With WebBrowser1
'Contrôle statut du WebBrowser au démarrage (égale à 4) puis affichage page en zoom 55%
Range("A1") = .readyState

'.Navigate fichier & "#zoom=16.5%&page=1&toolbar=0"
.Navigate Fichier & "#zoom=55%&page=1&toolbar=0"

'Contrôle statut du WebBrowser après l'opération (égale à 1)
Range("A1") = .readyState
End With

End Sub
voilà mon code complet dans userform,
en bleu, dans le code, il recherche dans la colonne 3 du tableau
et la recherche avec la combobox me donne ca comme resultat
1687862592467.png

je clique sur le résultat de la recherche, et le code me retourne ce message
1687862458550.png

et je voudrais pas passé pour un nul,
merci d'avance
 

Zon

XLDnaute Impliqué
Re,

Cela veut dire que le fichier 12040.pdf n'est pas présent dans le dossier C:\Loc Ng 23\04-Livrets de Lignes\

Depuis le début je te demande comme s'intitule tes fichiers PDF , moi je suis parti du principe qu'ils sont sous la forme 12040.pdf . Est ce bien cela ???


Moi j'ai testé sur ma machine par précaution avec le dossier Loc Ng 23 puis le sous dossier 04-Livrets de Lignes

J'ai mis des PDF avec des noms tels que 12040.pdf , 12600.pdf dans ce sous dossier cela fonctionne.

A+++
 

pelerin65

XLDnaute Occasionnel
Re, oui c'est bien ça ils sont sous cette forme, ça va du N° 11000 jusqu'au N° 16000

et les deux tableaux servent a ca aussi pour la recherche ou pas

donc quand je choisi dans une ville dans la combobox et qui ne donne des résultat je clique sur la ligne et normalement ça ouvre le pdf

et la partie du vba pour le combobox est bon donc

cordialement
 

pelerin65

XLDnaute Occasionnel
re,

j ai trouvé l'erreur en plus tu me l 'as dis

Il te manque un antislash ... "C:\Loc Ng 23\04-Livrets de Lignes\"

1687876969847.png


et dernier petit truc qui gêne pas le fonctionnement, mais c est les trois carrés blancs au dessus des résultats. on peut pas les retirés
 

Discussions similaires

Statistiques des forums

Discussions
312 217
Messages
2 086 352
Membres
103 195
dernier inscrit
martel.jg