Microsoft 365 Ouverture de fichier

TCHIS

XLDnaute Occasionnel
Bonsoir à tous je suis entrain développer un outil sur excel depuis des semaines d'ailleurs certains d'entres vous m'ont beaucoup aider

Ce qu'il y a c'est que j'ai un formulaire sur lequel j'ai monté une ListView et chacune des lignes de cette listView correspond à document se trouvant en deux formats (Word & PDF) dans des dossiers bien défini.

Ce que je souhaite réaliser c'est ouvrir au double clique sur une ligne de la listview soit le format Word soit le format PDF.
En d'autre terme mettre en place un code d'ouverture de fichier comme lien hypertext

Comme données importantes il y a site(ColonneA), métier(ColonneC) et désignation_Gamme(ColonneF) car chaque fichier (Word & PDF)) porte un Nom=désignation_Gamme et se trouve dans un dossier dans le chemin est le suivant: Site(ALIMA,DJENO,LIKOUF,etc)=>Métier(ELEC,INST,MECA) et dans chaque dossier métier que sont ELEC,INST,MECA il y 'a sept autres dossiers
  1. 00Gamme en attente de validation SUP(0%)
  2. 01Gamme en attente de validation SIM(25%)
  3. 02Gamme en attente de validation MM(50%)
  4. 03Gamme en attente de validation GMAO (75%)
  5. 04Gamme Validées (100%)
  6. Gamme à modifiées
  7. Natifs Word
Alors autre point très important c'est que le format Word de ces fichiers que sont les Gammes restent dans le dossier Natif Word et ne seront pas destinées à être déplacés par contre les formats PDF eux sont destinées à être déplacés dans un dossier spécifique en fonction du niveau de validation (0%, 25%, 50%, 75% & 100%).
Ce qui fait que pour ce qui concerne l'ouverture du format Word de fichier(Gamme) qu'on souhaite ouvrir il faut suivre le chemin jusqu'aux dossiers Natifs Word où se doit se trouver les version Word par contre le format PDF le code doit être monter de sorte à rechercher dans les dossiers 1,2,3,4,5 le fichier en format PDF correspondant car ce fichier PDF peut être dans de ces 5 dossier selon le niveau de validation qu'il a.

Comme toujours je viens avec un sujet perplexe tout du moins perplexe pour moi et j'espère qu'on pourra trouver une solution ensemble🙏🙏🙏🙏
Je suis ouvert à toutes propositions
 

Pièces jointes

  • TCHIS.xlsm
    58.5 KB · Affichages: 2

TCHIS

XLDnaute Occasionnel
Juste deux petits conseils en passant :
- arrête les indentations farfelues, ton code sera ainsi plus lisible,
- arrête le EsleIf et passe au Select Case, ton code sera ainsi plus lisible.


Bonne journée
🖖
D'accord je comprends le second point mais excuse-moi tu veux dire quoi par
arrête les indentations farfelues, ton code sera ainsi plus lisible
Est ce que tu fais allusion aux commentaires que je met ?
 

TCHIS

XLDnaute Occasionnel
Re
alors j'ai retouché le code question de l'aléger je pense que la macro marche puisque ça me donne ceci
1683299812506.png


sauf que ce qui dérange c'est qu'après le double clique sur une ligne de la ListView ça ne part pas sélectionner la ligne correspondante dans la feuille Excel mais la première ligne de la feuille et donc récupère comme nom du Docs à ouvrir le contenu de la cellule en colonne F la première ligne (F1) qui se sélection et ce contenu est Désignation_Gamme

Donc je me dis que la macro peu marchée mais que le point bloquant est dans le fait que ça ne sélectionne pas la bonne ligne.
Pourriez-vous m'aider svp car j'y suis depuis quelques heures déjà et rien à faire
 

TCHIS

XLDnaute Occasionnel
Pour aller sélectionner la ligne correspondant sous la feuille excel voici comment je m'y suis pris
1683300886337.png

Et ça marche je veux dire par là quand je met toute la partie du code qui gère l'ouverture du fichier Word en commentaire pour tester si je sélectionne la ligne sous la feuille Excel au double clique.
J'en perd la tête car je ne capte pas le point défaillant qui fait qu'il n'est pas sélection de la bonne ligne lorsque la macro est activé
 

TCHIS

XLDnaute Occasionnel
Re
Pas évident ainsi!
Pourrais tu mettre la nouvelle mouture de ton code ?
Jean marie
Bien sùr voici le code

VB:
'Ici on a la macro qui gère l'ouverture des fichiers WORD

   

    'Déclaration des Variables

    Dim ws As Worksheet

    Dim chemin As String

    Dim LefichierW As String

    Dim NomFich As String

    Dim Existe As Boolean

    Dim fs As Object, Rep As Object

    Dim lg As Long

    Dim C As Variant

C = Feuil1.Range("A2:P2" & Feuil1.Range("A" & Rows.Count).End(xlUp).Row).Value

'    C = Feuil1.Range("A2:P2" & dligne).Value

Dim mavariableSite As String

        mavariableSite = Cells(NumLig + 1, 1).Value 'Peut-etre mettre .Count aulieu de point .Value

Dim mavariableMétier As String

        mavariableMétier = Cells(NumLig + 1, 3).Value

       

       

     Set ws = Sheets("BD_NATIFS")

        Application.Goto ws.Cells(NumLig + 1, 1) 'ligne de code pour ce positionner sur la ligne correspondante

'MsgBox Cells(NumLig + 1, 1).Row

'*******************************************************************************************************************************************************

        'Le role de ces lignes de code de la macro est de définir le chemin des Gammes Opératoires selon le Site et le métier auxquels celles-ci appartiennent

'*******************************************************************************************************************************************************

            '**************Début Code Chemin*******************



If mavariableSite = "ALIMA" Then

If mavariableMétier = "ELEC" Then

'   chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-ELEC

ElseIf mavariableMétier = "INST" Then

'   chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-INST

ElseIf mavariableMétier = "MECA" Then

'   chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-MECA

End If

ElseIf mavariableSite = "DJENO" Then

If mavariableMétier = "ELEC" Then

chemin = "\\main.glb.corp.local\ep-cg$\Home\BIN\9\L1090289\Desktop\Gammes Opératoires TotalEnergies\DJENO\ELEC\Natifs(Format word)"

'   chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-ELEC

ElseIf mavariableMétier = "INST" Then

        'On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-INST

chemin = "\\main.glb.corp.local\ep-cg$\Home\BIN\9\L1090289\Desktop\Gammes Opératoires TotalEnergies\DJENO\ELEC\Natifs(Format word)"

ElseIf mavariableMétier = "MECA" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-MECA

End If

ElseIf mavariableSite = "LIKOUF" Then

If mavariableMétier = "ELEC" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-ELEC

ElseIf mavariableMétier = "INST" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-INST

ElseIf mavariableMétier = "MECA" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-MECA

End If

ElseIf mavariableSite = "NKOSSA" Then

If mavariableMétier = "ELEC" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-ELEC

ElseIf mavariableMétier = "INST" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-INST

ElseIf mavariableMétier = "MECA" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-MECA

End If

ElseIf mavariableSite = "NORD" Then

If mavariableMétier = "ELEC" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-ELEC

ElseIf mavariableMétier = "INST" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-INST

ElseIf mavariableMétier = "MECA" Then

'    chemin =  'On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-MECA

End If

End If



 

            '**************Fin Code Chemin*******************



'*********************************************************************************

        'Voici les lignes de code de la macro qui permettent d'ouvrir le fichier Word

'*********************************************************************************





NomFich = Cells(NumLig + 1, 6).Value & ".docx"

Workbooks.Open chemin & "\" & NomFich

                               

     Set ws = Nothing

C'est avec ce code que j'ai ces deux problèmes.

Premièrement plus de sélection de la bonne ligne sous excel mais à la place c'est la première ligne autrement dit l'en-tete qui est sélectionner d'où cette erreur
1683302177532.png

Et deuxièmement même quand je j'essaie de renommer un fichier ce trouvant dans le dossier en l'appelant Désignation_Gamme comme le contenu de la fammeuse cellule F1 pour si ça allait au moins ouvrir le fichier Word voici ce que ça ressort
1683302589404.png

Donc la macro en elle meme n'est pas good good o_O o_O o_O

Et enfin troisièmement ça prend littéralement 1minute pour arriver jusqu'à donner l'erreur j'imagine que c'est à tous ces If et End If que j'ai mis retrouvé le fichier d'où la proposition de @TooFatBoy
- arrête le EsleIf et passe au Select Case, ton code sera ainsi plus lisible
Quelles sont vos avis sur ces trois points ?
 

TooFatBoy

XLDnaute Barbatruc
Le code de #24 est parfait pour t'exercer si tu veux abandonner le ElseIf et passer au Select Case. ;)


VB:
    NomFich = Cells(NumLig + 1, 6).Value & ".docx"
    Workbooks.Open chemin & "\" & NomFich
Ca marche ça ??? Un Workbooks.Open pour un fichier .docx ??? 🤔
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
VB:
Sub OuvrirFichierDOCX()
' Ici on a la macro qui gère l'ouverture des fichiers WORD
'
Dim ws As Worksheet
Dim chemin As String, LefichierW As String, NomFich As String
Dim Existe As Boolean
Dim fs As Object, Rep As Object
Dim lg As Long
Dim C As Variant

Dim MaVariableSite As String
Dim MaVariableMetier As String

    C = Feuil1.Range("A2:P2" & Feuil1.Range("A" & Rows.Count).End(xlUp).Row).Value
    MaVariableSite = Cells(NumLig + 1, 1).Value ' Peut-être mettre .Count au lieu de point .Value
    MaVariableMetier = Cells(NumLig + 1, 3).Value

    Set ws = Sheets("BD_NATIFS")
    Application.Goto ws.Cells(NumLig + 1, 1)

'    MsgBox Cells(NumLig + 1, 1).Row

    '*******************************************************************************************************************************************
    ' Le rôle de ces lignes de code est de définir le chemin des Gammes Opératoires selon le Site et le Métier auxquels celles-ci appartiennent
    '*******************************************************************************************************************************************

    '************** Début Code Chemin *******************

    Select Case MaVariableSite

    Case "ALIMA"
        Select Case MaVariableMetier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-ELEC
'            chemin =
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-INST
'            chemin =
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-MECA
'            chemin =
        End Select

    Case "DJENO"
        Select Case MaVariableMetier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-ELEC
            chemin = "\\main.glb.corp.local\ep-cg$\Home\BIN\9\L1090289\Desktop\Gammes Opératoires TotalEnergies\DJENO\ELEC\Natifs(Format word)"
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-INST
            chemin = "\\main.glb.corp.local\ep-cg$\Home\BIN\9\L1090289\Desktop\Gammes Opératoires TotalEnergies\DJENO\ELEC\Natifs(Format word)"
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-MECA
'            chemin =
        End Select

    Case "LIKOUF"
        Select Case MaVariableMetier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-ELEC
'            chemin =
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-INST
'            chemin =
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-MECA
'            chemin =
        End Select

    Case "NKOSSA"
        Select Case MaVariableMetier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-ELEC
'            chemin =
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-INST
'            chemin =
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-MECA
'            chemin =
        End Select
  
    Case "NORD"
        Select Case MaVariableMetier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-ELEC
'            chemin =
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-INST
'            chemin =
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-MECA
'            chemin =
        End Select

    End Select

    '************** Fin Code Chemin *******************

    '******************************************************************
    ' Voici les lignes de code qui permettent d'ouvrir le fichier Word
    '******************************************************************
    NomFich = Cells(NumLig + 1, 6).Value & ".docx"
    Workbooks.Open chemin & "\" & NomFich
    Set ws = Nothing

End Sub

Ceci dit, ça reste bien compliqué pour quelque chose qui doit être infiniment simplifiable, genre ceci :
VB:
chemin = "\\main.glb.corp.local\ep-cg$\Home\BIN\9\L1090289\Desktop\Gammes Opératoires TotalEnergies\" & MaVariableSite & "\" & MaVariableMetier & "\Natifs(Format word)"
 
Dernière édition:

TCHIS

XLDnaute Occasionnel
Bonjour à tous
Bonne et grande nouvelle 😇 😇 l'ouverture des fichiers Word marche après double clique
On sélectionne la bonne ligne sur la feuille et la macro word s'exécute parfaitement
j'attaque sur l'ouverture des fichiers PDF à présent

le code le voici
VB:
Sub Format_WORD_GO(NumLig As Long)
'Ici on a la macro qui gère l'ouverture des fichiers WORD
    
    'Déclaration des Variables
    Dim docWrd As Word.Document
    Dim appWrd As Word.Application
    Dim ws As Worksheet
    Dim chemin As String
'    Dim LefichierW As String
    Dim NomFich As String
    Dim Existe As Boolean
    Dim C As Variant
    Dim i As Integer
C = Feuil1.Range("A2:P2" & Feuil1.Range("A" & Rows.Count).End(xlUp).Row).Value

Set ws = Sheets("BD_NATIFS")
        Application.Goto ws.Cells(NumLig + 1, 1)  'ligne de code pour ce positionner sur la ligne correspondante
Sheets("BD_NATIFS").Activate
i = ActiveCell.Row
If i = 1 Then GoTo Tchiss 'Pour ne pas à exécuter la macro pour la première ligne

Dim mavariableSite As String
mavariableSite = Cells(i, 1).Value
Dim mavariableMétier As String
mavariableMétier = Cells(i, 3).Value
'*******************************************************************************************************************************************************
'Le role de ces lignes de code de la macro est de définir le chemin des Gammes Opératoires selon le Site et le métier auxquels celles-ci appartiennent
'*******************************************************************************************************************************************************
                     '**************Début Code Chemin*******************
        
    Select Case mavariableSite
    Case "ALIMA"
        Select Case mavariableMétier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-ELEC
'            chemin =
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-INST
'            chemin =
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO ALIMA-MECA
'            chemin =
        End Select

    Case "DJENO"
        Select Case mavariableMétier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-ELEC
            chemin = "\\main.glb.corp.local\ep-cg$\Home\BIN\9\L1090289\Desktop\Gammes Opératoires TotalEnergies\DJENO\ELEC\Natifs(Format word)"
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-INST
            chemin = "\\main.glb.corp.local\ep-cg$\Home\BIN\9\L1090289\Desktop\Gammes Opératoires TotalEnergies\DJENO\ELEC\Natifs(Format word)"
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO DJENO-MECA
'            chemin =
        End Select

    Case "LIKOUF"
        Select Case mavariableMétier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-ELEC
'            chemin =
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-INST
'            chemin =
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO LIKOUF-MECA
'            chemin =
        End Select

    Case "NKOSSA"
        Select Case mavariableMétier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-ELEC
'            chemin =
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-INST
'            chemin =
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NKOSSA-MECA
'            chemin =
        End Select

    Case "NORD"
        Select Case mavariableMétier
        Case "ELEC"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-ELEC
'            chemin =
        Case "INST"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-INST
'            chemin =
        Case "MECA"
            ' On va définir ici le chemin correspondant à l'emplacement d'une GO NORD-MECA
'            chemin =
        End Select

    End Select
        
            '**************Fin Code Chemin*******************

'*********************************************************************************
'Voici les lignes de code de la macro qui permettent d'ouvrir le fichier Word
'*********************************************************************************

                NomFich = Cells(i, 6).Value & ".docx"
Set appWrd = CreateObject("word.Application")
appWrd.documents.Open chemin & "\" & NomFich
appWrd.Visible = True
appWrd.Activate
Set ws = Nothing
Tchiss:
End Sub
 

TooFatBoy

XLDnaute Barbatruc
Set ws = Sheets("BD_NATIFS")
Application.Goto ws.Cells(NumLig + 1, 1)
Sheets("BD_NATIFS").Activate
i = ActiveCell.Row
If i = 1 Then GoTo Tchiss 'Pour ne pas à exécuter la macro pour la première ligne

1- Pourquoi créer ws si c'est pour ne pas l'utiliser ensuite ? 😉

2- Pourquoi activer la feuille "BD_NATIFS" ?

3- Et pourquoi ne pas remplacer tout ça par un truc du genre
VB:
If NumLig=0 Then Exit Sub
 

TCHIS

XLDnaute Occasionnel
1- Pourquoi créer ws si c'est pour ne pas l'utiliser ensuite ? 😉

2- Pourquoi activer la feuille "BD_NATIFS" ?

3- Et pourquoi ne pas remplacer tout ça par un truc du genre
VB:
If NumLig=0 Then Exit Sub
Alors toutes ces astuces je les ai mis en place pour palier un souci qui est que la macro quelque soit la ligne pointée elle commence d'abord par la première ligne celle de l'en-tête et donc pour la contourner j'ai du m'y prendre ainsi
 

Discussions similaires

Statistiques des forums

Discussions
314 717
Messages
2 112 167
Membres
111 448
dernier inscrit
ayment