Trouver lien absolu pour le convertir en lien relatif

Résolu
Nai Messages postés 709 Date d'inscription   Statut Membre Dernière intervention   -  
Nai Messages postés 709 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir la communauté ^^
Je cherche à ouvrir un fichier depuis une macro. Ce fichier à ouvrir se trouve dans le même dossier que le fichier où se trouve cette même macro (au pire dans un dossier enfant).
Je suis "parvenu" à déterminer le chemin du fichier source avec :
Sub RecupChemin
	' déclaration des variables
	Dim objWriter As Object			' déclaration de notre fichier
	Dim strCheminParent As String	' chemin sans le fichier	
	Dim tab() As String				' tableau permettant d'avoir le détail du chemin
	Dim i As Integer
 
	objWriter = ThisComponent
	tab() = Split(Right(objWriter.URL,Len(objWriter.URL)-8),"/")
	For I = 0 to Ubound(tab())-1
		strCheminParent =strCheminParent & tab(i)&"\"
	Next I
	MsgBox strCheminParent
 
End Sub

Le MsgBox m'indique effectivement le chemin absolu du fichier (peut-être existe-t-il un moyen plus simple).
Je pensais pouvoir réutiliser cette information pour la suite de ce que je veux faire.
C'est à dire ouvrir un fichier après avoir saisi le bon mot de passe :
Sub ouvrirfinjeu 
   Dim Fichier As String 
   Dim Wb As Object 
   Dim Args() 
   DIm mdp as String
 
  mdp = INPUTBOX("Mot de passe")
  If mdp = "mdp" then goto OUVRE else goto FIN
  
 OUVRE:
 rem ouveture en pps ou odp
 Fichier = ConvertToUrl ("C:\Users\chemin\finjeu.pps") 
 Wb = StarDesktop.loadComponentFromURL(Fichier,"_blank",0 ,Args() )
 FIN:

End Sub

Comment remplacer la partie indiquant le chemin du fichier par celle du dossier indiquée par strCheminParent ?

Merci d'avance de votre aide ! :)



--
Bien à vous,
Naï
ps: je surveille tous mes sujets non résolus, si solution vous avez, je la lirais à coup sûr :)

1 réponse

  1. yclik Messages postés 3874 Date d'inscription   Statut Membre Dernière intervention   1 609
     
    Bonjour
    après avoir bidouillé il s'avère que la difficulté est de jongler avec séparateurs / et \ pour les adresses de fichier type file:///C:/rep et c:\rep

    une propositiion de solution (supprimer ensuite les msgbox ou précéder d e REM)

    Sub ouvrirfinjeu 
       Dim Fichier_mdp_ok As String
       Dim Fichier_mdp_nok As String
       
       Dim lance_mdp_ok As Object
       Dim lance_mdp_nok As Object
       Dim Args() 
       DIm mdp as String
     
    rem RecupChemin
    	' déclaration des variables
    	Dim objWriter As Object			' déclaration de notre fichier
    	Dim strCheminParent As String	' chemin sans le fichier	
    	Dim tab() As String				' tableau permettant d'avoir le détail du chemin
    	Dim i As Integer
     
    	objWriter = ThisComponent
    	tab() = Split(Right(objWriter.URL,Len(objWriter.URL)-8),"/")
    
    	For I = 0 to Ubound(tab())-1
    		strCheminParent =strCheminParent & tab(i)&"\"
    	Next I
    	MsgBox " adresse type c: "&strCheminParent
    rem nombre de caractère de l'adresse type c:
    	nbcar_chemin = len(strCheminParent)
    	msgbox "nb car type c: "& nbcar_chemin
    rem nombre de cractère de file:/// = 8
    rem nombre de caractère du chemin type file:/// 
    nbcar_chemin_file=	nbcar_chemin+8
    msgbox nbcar_chemin_file
    
    rem mot de passe
      mdp = INPUTBOX("Mot de passe")
      If mdp = "mdp" then goto MDP_OK else goto ERREUR_MDP
    
    
      
     MDP_OK:
     
    Fichier_mdp_ok = ConvertToUrl (left(ThisComponent.getURL(),nbcar_chemin_file)&"finjeu.odp")
    lance_mdp_ok = StarDesktop.loadComponentFromURL(Fichier_mdp_ok,"_blank",0 ,Args() )
      exit sub
    
     ERREUR_MDP:
       rem ouveture fichier mdp incorrect
       Fichier_mdp_nok = ConvertToUrl (left(ThisComponent.getURL(),nbcar_chemin_file)&"erreurmdp.odp")
       lance_mdp_nok = StarDesktop.loadComponentFromURL(Fichier_mdp_nok,"_blank",0 ,Args() )
    End Sub 
    1
    1. Nai Messages postés 709 Date d'inscription   Statut Membre Dernière intervention   56
       
      Magnifique ! Du premier coup ^^
      Tout fonctionne à merveille. J'ai simplement changé mon dossier de place. On verra ce que ça donne depuis un autre poste.

      Juste une question. A quoi servent ces MsgBox ? Quel intérêt ai-je de savoir le nombre de caractères contenus dans le chemin du fichier ?
      msgbox "nb car type c: "& nbcar_chemin
      msgbox nbcar_chemin_file
      0
    2. yclik Messages postés 3874 Date d'inscription   Statut Membre Dernière intervention   1 609
       
      Bonjour
      les msgbox peuvent être supprimées, c'était pour déboguer.
      0
    3. Nai Messages postés 709 Date d'inscription   Statut Membre Dernière intervention   56
       
      Ah d'accord. Merci ! :)
      0