Ouvrir 1 PDF, depuis un bouton du USF, lié à un lien hypertexte d'1 cellule

Il y a qqch que je ne comprends pas dans le code.

Tu définis la variable "i" comme plage des différents BC, allant de 1 à 1500.

Puis la limite supérieure du dossier = "i" (premier chiffre du dossier) + 50 - 1 --> Ca je comprends

Maintenant, comment le code arrive à savoir quand "i" = 1 ou 51 ou 101 ou 201 etc ?

Je vais fouiller, je reviens au plus vite

Avec la partie du code ci-dessous :

    TailleDossier = 50
    For i = 1 To 1500 Step TailleDossier
        LimiteInf = i
        LimiteSup = i + TailleDossier - 1
        If Ligne >= LimiteInf And Ligne <= LimiteSup Then NomDossier = "BC " & LimiteInf & "à" & LimiteSup: Exit For
    Next i

Par défaut, les dossiers comportent 50 BC, d'où TailleDossier=50, de plus tu dis que la limite max est de 1 500 BC. Je fais donc une boucle de 1 à 1 500 avec un step à 50. La variable i ne prend donc que comme valeur un multiple de 50. La variable i va être donc être égale à 1 puis 51 puis 101 , etc. Si je n'avais pas précisé Step TailleDossier i aurai été incrémenté de +1 (valeur du step par défaut si non précisé) donc i égale 1 puis 2 puis 3 , etc.

Pour l'erreur liée au check du dossier j'ai fait une petite erreur aussi, il faut que tu remplace Cible = "S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC\" & NomDossier par Cible = "S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC\" & NomDossier & "\"

J'ai ajouté le "\" au code, mais cela ne fonctionne toujours pas.

Quand tu es dans un dossier, la ligne de commande ne finit pas par un \

S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC\BC 251à300

j'ai défini la limite max à 1500 "pour être large", je n'atteindrai jamais ce nb de BC.

Actuellement je suis au 608 et comme tu peux le voir sur la photo, les dossiers vont de 1 à 650 (les autres ne sont pas encore crées (je peux le faire si besoin)

J'ai changé 1500 dans le code par 650 et j'ai un débogage : photo ci jointe

photo 3

Une remarque aussi très importante !! Si les dossiers sont sur un serveur. N'utilise pas le nom d lecteur réseau pour indiquer le chemin (S:) car il est libre de choix, un utilisateur peut très bien avoir associé le serveur à un autre nom de lecteur comme le Z: Encore pire si l'utilisateur n'à pas ajouté le serveur dans ses lecteurs réseau Il faut que tu récupère le nom du serveur et que tu remplace le S: par le nom trouvé.

Le nom du serveur peut être par exemple SERVFRA010203 et l'accès aux sous dossiers se fait donc réellement par le chemin \\SERVFRA010203\ERO_PS\Commun\ qui est identique à S:\ERO_PS\Commun

Le serveur est bien sur le S:

Mais j'avais déjà remplacé la lettre par le vrai nom du serveur, mais rien à y faire... J'ai toujours le débogage sur la même ligne

Actuellement j'ai :

Remplacé 1500 par 650

Changé "S:\" par \\222.10.146.16\data-ssf\

Ajouté : & "\"

Tu devrais éviter de mettre l'adresse du serveur dans ton poste (si elle est vrai et si c'est pas une adresse ip interne)

Enlève le "\" que je t'ai fait rajouté juste après le NomDossier & "\"

Essaie de remplacer Shell Environ("WINDIR") & "\explorer.exe " & Cible, vbNormalFocus par Shell "explorer.exe " & temp, vbNormalFocus

Merci pour le conseil, elle est interne mais quand même mis de faux chiffres

Lorsque je mets le nouveau Shell, j'ai le message : Erreur de compilation: Variable non définie

un autre essai :

Private Sub CommandButton10_Click()
Dim cible As String, NomDossier As String
Dim OuvrirDossier As FileDialog
Dim FichierExiste As Boolean
Dim TailleDossier As Integer
Dim LimiteInf As Long, LimiteSup As Long, i As Long, Ligne As Long

    If Me.ComboBox1.ListIndex = -1 Or Me.ComboBox1 = "" Then Exit Sub
    Ligne = Me.ComboBox1.ListIndex + 1
    TailleDossier = 50
    For i = 1 To 1500 Step TailleDossier
        LimiteInf = i
        LimiteSup = i + TailleDossier - 1
        If Ligne >= LimiteInf And Ligne <= LimiteSup Then NomDossier = "BC " & LimiteInf & "à" & LimiteSup: Exit For
    Next i
    cible = "S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC\" & NomDossier
    If Len(Dir(cible)) > 0 Then FichierExiste = True Else FichierExiste = False
    If FichierExiste = False Then MsgBox "Le dossier n'existe pas, il a peut-être été supprimé ou déplacé.", vbExclamation: Exit Sub
    Set OuvrirDossier = Application.FileDialog(msoFileDialogFolderPicker)
    With OuvrirDossier
        .InitialFileName = cible
        .Show
    End With
End Sub

Encore un autre essai : (qui fonctionne chez moi), vérifie bien aussi que tu retrouves bien l'application Explorateur.exe dans le disque C dans le sous dossier Windows ! J'ai même regardé, je n'ai pas de module complémentaire d'acitvé chez moi qui me permettrais l'utilisation de Shell Ton OS est bien un Windows ?!

image
Private Sub CommandButton10_Click()
Dim cible As String, NomDossier As String
Dim OuvrirDossier As Object
Dim FichierExiste As Boolean
Dim TailleDossier As Integer
Dim LimiteInf As Long, LimiteSup As Long, i As Long, Ligne As Long

    If Me.ComboBox1.ListIndex = -1 Or Me.ComboBox1 = "" Then Exit Sub
    Ligne = Me.ComboBox1.ListIndex + 1
    TailleDossier = 50
    For i = 1 To 1500 Step TailleDossier
        LimiteInf = i
        LimiteSup = i + TailleDossier - 1
        If Ligne >= LimiteInf And Ligne <= LimiteSup Then NomDossier = "BC " & LimiteInf & "à" & LimiteSup: Exit For
    Next i
    cible = "S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC\" & NomDossier
    Set OuvrirDossier = CreateObject("Scripting.FileSystemObject")
    With OuvrirDossier
        If (.FolderExists(cible)) Then
            Shell "C:\WINDOWS\explorer.exe """ & cible & "", vbNormalFocus
            'Ou : Shell "C:\WINDOWS\explorer.exe " & cible, vbNormalFocus
        Else
            MsgBox "Le dossier n'existe pas, il a peut-être été supprimé ou déplacé.", vbExclamation
        End If
    End With
End Sub

Ca ne fonctionne toujours pas !

Oui, c'est bien un Windows mon OS, par contre, dans la barre, le windows apparait deux fois... J'ai essayé en le mettant deux fois dans le code, mais rien à faire. Cette fois, plus d'erreur type debogage mais le message comme quoi le dossier est introuvable.

photo 4

C'est bon! Ca marche !

En fait, j'ai repris le dernier code que tu as envoyé mais en conservant la taille dossier jusqu'à 1500... Or ils ne sont pas encore créés. J'ai remplacé 1500 par 650 et cela fonctionne !

T'es au top !

sinon, je n'ai jamais parlé d'une bière :) pourquoi pas une flibuste de 1986

Encore merci pour tout ! Mon fichier est maintenant opérationnel à 100% ! Bravo

Ouf, j'ai eu peur que ça ne marche toujours pas Bon après c'est quand même étrange que ça fonctionne sur un intervalle et pas un autre Essaie de te mettre en débogage, faire n petit F8 à chaque étape pour vérifier ce qu'il se passe et si tu veux contrôler des valeurs n'hésite pas à utiliser Debug.Print Je ferais des tests demain pour voir si je trouve pourquoi

Si ton fichier est opérationnel, j'en suis heureux "T'es au top !", j'ai encore beaucoup à apprendre !!

Flibuste de 86 , je suis à deux doigts de réserver un vol pour Marseille là

Pourrais tu me donner l'intervelle de la boucle FOR que tu as utilisé quand ça ne marchais pas et me dire combien tu as de dossier BR que je recréer chez moi les même condition pour faire des tests stp ? ;)

Salut GGautier,

En fait faudra aller jusqu'à Toulon :)

Sinon, hier je me suis emballé un peu trop vite.

Lorsque je sélectionne un BC (le 584 par exemple) et clique sur le bouton, l'ouverture du dossier fonctionne, MAIS, pas le bon dossier. En effet, l'ouverture se fait en amont -

Ici :

photo 1

au lieu de se faire ici :

photo 3

La boucle boucle For ne fonctionne pas avec 1500. J'ai essayé avec 650 700 900 1000 etc jusqu'à 1350 et cela fonctionne. au dela non.

Concernant les dossiers relatifs aux BC, c'est les seuls que j'ai sous S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC

photo 2

Pour info, je ne sais pas si cela a de l'importance, à l'intérieur de ces dossiers, il n'y a pas directement le BC en PDF, mais des sous dossiers et encore des sous dossiers avant d'arriver au PDF. Mais ce qui m'interesse, c'est juste d'arriver ici :

photo 3

Pour commencer je crois que j'ai fais une erreur. J'utilisais le numéro de la ligne du ComboBox au moment de la sélection d'un BC (méthode que j'avais utilisée pour ouvrir le lien du BC directement dans ton autre bout de code). Du coup ça n'a absolument plus lieux d'être (je cois que je vais devoir jeter un coup d'oeil au code du bouton qui ouvre les BC)

A part ça je n'ai rien changé d'autre dans le code :

Private Sub TEST()
Dim cible As String, NomDossier As String
Dim OuvrirDossier As Object
Dim FichierExiste As Boolean
Dim TailleDossier As Integer
Dim LimiteInf As Long, LimiteSup As Long, i As Long, LeBC As Long

    If Me.ComboBox1.ListIndex = -1 Or Me.ComboBox1 = "" Then Exit Sub
    LeBC = CLng(Me.ComboBox1)
    TailleDossier = 50
    For i = 1 To 1500 Step TailleDossier
        LimiteInf = i
        LimiteSup = i + TailleDossier - 1
        If LeBC >= LimiteInf And LeBC <= LimiteSup Then NomDossier = "BC " & LimiteInf & "à" & LimiteSup: Exit For
    Next i
    cible = "S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC\" & NomDossier
    Set OuvrirDossier = CreateObject("Scripting.FileSystemObject")
    With OuvrirDossier
        If (.FolderExists(cible)) Then
            Shell "C:\WINDOWS\explorer.exe """ & cible & "", vbNormalFocus
            'Ou : Shell "C:\WINDOWS\explorer.exe " & cible, vbNormalFocus
        Else
            MsgBox "Le dossier n'existe pas, il a peut-être été supprimé ou déplacé.", vbExclamation
        End If
    End With
End Sub

Si encore après ça tu ouvres le dossier racine et non le dossier BC xxàxx essai en rajoutant un &"\" après NomDossier sur le lien de la cible dans le code. Pour ma part, avec ou sans le &"\" le code ouvre bien le bon dossier.

Et non qu'importe ce que contient le dossier il doit s'ouvrir normalement. Le contenue n'a pas d'influences.

Impeccable; cela fonctionne même avec 1500 Pour le code qui ouvre les BC en PDF, il fonctionne très bien !

Merci beaucoup pour ton aide

Parfait alors

Je me permet une harmonisation du code d'ouverture du fichier (.pdf) et du dossier. Autant suivre la même logique de programmation étant donner la grande similitude entre les deux codes

J'ai aussi rajouté un petit contrôle au moment de la sélection du BC pour l'ouverture du dossier

Private Sub CommandButton10_Click()
Dim Cible As String, NomDossier As String
Dim OuvrirDossier As Object
Dim TailleDossier As Integer
Dim LimiteInf As Long, LimiteSup As Long, i As Long, LeBC As Long

    If Me.ComboBox1.ListIndex = -1 Or Me.ComboBox1 = "" Then Exit Sub
    On Error Resume Next
    LeBC = Me.ComboBox1
    If Err.Number <> 0 Then MsgBox "Erreur définition du BC", vbCritical: Exit Sub
    On Error GoTo 0
    TailleDossier = 50
    For i = 1 To 1500 Step TailleDossier
        LimiteInf = i
        LimiteSup = i + TailleDossier - 1
        If LeBC >= LimiteInf And LeBC <= LimiteSup Then NomDossier = "BC " & LimiteInf & "à" & LimiteSup: Exit For
    Next i
    If NomDossier = "" Then MsgBox "Impossible de définir le nom du dossier à atteindre.", vbExclamation
    Cible = "S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC\" & NomDossier
    Set OuvrirDossier = CreateObject("Scripting.FileSystemObject")
    With OuvrirDossier
        If (.FolderExists(Cible)) Then
            Shell "C:\WINDOWS\explorer.exe """ & Cible & "", vbNormalFocus
        Else
            MsgBox "Impossible d'atteindre le dossier (""" & Cible & """)" & Chr(10) & Chr(10) & "Il a pu être déplacé, renommé ou supprimé.", vbCritical
        End If
    End With
End Sub

Private Sub CommandButton8_Click()
Dim Cible As String, LeBC As String
Dim OuvrirFichier As Object

    If Me.ComboBox1.ListIndex = -1 Or Me.ComboBox1 = "" Then Exit Sub
    LeBC = Me.ComboBox1
    Cible = "S:\ERO_PS\Commun\2. PR_BCR\Contrat\2-BC\BC Notifiés\" & "BC" & LeBC & ".pdf"
    Set OuvrirFichier = CreateObject("Scripting.FileSystemObject")
    With OuvrirFichier
        If (.FileExists(Cible)) Then
            Shell "C:\WINDOWS\explorer.exe """ & Cible & "", vbNormalFocus
        Else
            MsgBox "Impossible d'atteindre le fichier (""" & Cible & """)" & Chr(10) & Chr(10) & "Il a pu être déplacé, renommé ou supprimé.", vbCritical
        End If
    End With
End Sub
Rechercher des sujets similaires à "ouvrir pdf bouton usf lie lien hypertexte"