IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ouvrir un XLTX en XLSX depuis un hyperlien. [XL-2016]


Sujet :

Macros et VBA Excel

  1. #21
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 172
    Points : 80
    Points
    80
    Par défaut
    J'ai crié victoire un peu vite.
    Ce matin, j'ai testé sur le fichier habituel au départ de l'XLAM.
    Tout a bien fonctionné, d'où mon message précédent.
    Maintenant, je viens d'essayer sur une page vierge dans laquelle je place quelques liens et plus rien ne fonctionne.
    Je vérifie et réeessaie sur la page d'origine, les modèles se transforment.
    J'y perds mon latin.

  2. #22
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    oui effectivement j'ai géré la méthode open mais pas new!
    Code ThisWorkbook du XLAM : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Explicit
    Private WithEvents appXls As Excel.Application
    Private Wbs As New Collection
     
    Private Sub Workbook_Open()
      Set appXls = Excel.Application
    End Sub
     
    Private Sub appXls_WorkbookOpen(ByVal Wb As Workbook)
    On Error Resume Next
    Wbs.Add New WorkOpen, Wb.Name
    Set Wbs(Wb.Name).WBpXls = Wb
    Set Wbs(Wb.Name).Parent = Wbs
    On Error GoTo 0
    DoEvents
    End Sub
     
    Private Sub appXls_NewWorkbook(ByVal Wb As Workbook)
    On Error Resume Next
    Wbs.Add New WorkOpen, Wb.Name
    Set Wbs(Wb.Name).WBpXls = Wb
    Set Wbs(Wb.Name).Parent = Wbs
    On Error GoTo 0
    DoEvents
    End Sub

  3. #23
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 172
    Points : 80
    Points
    80
    Par défaut
    J'ai trouvé ce qui se passait.
    L'administrateur réseau a mis deux disques en miroir; le D:\ et le S:\
    Sans chercher malice, j'ai utilisé des fichiers XLTX du disque D:\ pour faire mes liens. Voici ce que j'ai trouvé dans le lien lorsque je l'ai rouvert :
    ..\..\Documents\Modèles%20Office%20personnalisés\C&C%20-%20Aide-Menagere%20-%20ADD%20-%20données%20pour%20creation%20automatique%20d'avenants%20-%2009052022.xltx
    Ce #@$µ£! d'Excel transforme le lien sans qu'on lui demande son avis.
    J'ai mis le même fichier dans un lien mais depuis le disque S:\ et tout fonctionne
    J'ai recommencé l'opération avec des fichiers du D:\ et du S:\ mais la substitution des espaces par %20 ne se reproduit plus.
    Je n'ai toujours pas retrouvé mon latin

  4. #24
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 172
    Points : 80
    Points
    80
    Par défaut
    Cette fois-ci, j'ai retrouvé mon latin !
    La transformation des espaces en %20 se produit au moment de l'enregistrement du fichier et uniquement avec le disque D:\, pas avec le S:\.
    Je me contenterai de lier des fichiers en utilisant le S:\, ce n'est pas du tout un problème.
    Désolé pour le dérangement.

    Pour info, la dernière version que tu m'as envoyé ne fonctionne pas, je suis revenu à la version précédente.
    Lors de l'ouverture d'un fichier (pas d'un lien dans un fichier, un autre fichier), il le referme immédiatement et il faut le rouvrir pour l'avoir à l'écran.

    Encore merci pour l'aide.
    J'espère que je ne te dérangerai plus.

    Bonne nuit !

  5. #25
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Je comprends les mystère de URL.

    Ceci dit ce que j'ai dit précédemment sur l'événement New reste valide je t'invites à mettre à jour le XLAM.

    Si tu me dérangeais je me serais mis sur répondeur !

  6. #26
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 172
    Points : 80
    Points
    80
    Par défaut Petit souci de dernière minute
    Bonjour Thumb up ,

    J'ai un petit souci que je te décris:
    J'ouvre un fichier XLTM pour lequel la routine que tu m'as écrit n'est pas utilisée.
    C'est un formulaire à remplir.
    Lorsque c'est terminé je l'enregistre en utilisant "Enregistrer sous". Ça fonctionne, pas de souci.
    Ensuite, je complète l'entrée des infos et je termine en fermant le classeur.
    A ce moment-là, j'ai un plantage ici : " Parent.Remove WBpXls.Name"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub WBpXls_BeforeClose(Cancel As Boolean)
        Parent.Remove WBpXls.Name
        DoEvents
    End Sub
    Si j'arrête l'exécution du code, il me propose d'enregistrer le fichier (normal puisque j'ai fait des modifs après le 1er enregistrement) ce que je fais et il ferme le fichier normalement.

    Comme j'ignore à quoi sert cette partie de la routine, je ne peux que te demander ton aide.

    Une idée de plus ?

  7. #27
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Bonjour,
    J'avais pas pensé à ce cas de figures.

    Je vais chercher une solution.

    Je t'explique quand même le problème.
    Quand on ouvre un ficher on le range dans une collection appelé parent avec son nom d'origine.
    Quand tu enregistrer sous tu lui changer de nom d'oncle nom du fichier es différents de celui de la collection !

  8. #28
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Bonjour,
    ja apporté des modifications.MyMacroPerso.zip

  9. #29
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi utiliser des liens hypertextes pour ouvrir des modèles alors qu'il me semble plus simple d'utiliser une liste des modèles dans une table ou bien utiliser un formulaire qui affiche les modèles présents dans un sous-formulaire et que l'utilisateur peut sélectionner selon ses besoins.
    Cela éviterait toutes ces tracasseries avec la procédure événementielle.
    Personnellement j'utilise toujours comme modèle des fichiers xlsx pour Excel ou docx pour Word qui sont placés dans un sous-répertoire nommé Template

    Un exemple de l'affichage des fichiers présents dans un sous répertoire, dans ce billet VBA/Excel - Fonction qui renvoie la liste des fichiers d'un répertoire en fonction d'un critère
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #30
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 172
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    Bonjour,
    ja apporté des modifications.MyMacroPerso.zip

    Une nouvelle fois merci pour tes modifs, je te reviens avec les résultats.

    Bat

    Henri

  11. #31
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 172
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Pourquoi utiliser des liens hypertextes pour ouvrir des modèles alors qu'il me semble plus simple d'utiliser une liste des modèles dans une table ou bien utiliser un formulaire qui affiche les modèles présents dans un sous-formulaire et que l'utilisateur peut sélectionner selon ses besoins.
    Cela éviterait toutes ces tracasseries avec la procédure événementielle.
    Personnellement j'utilise toujours comme modèle des fichiers xlsx pour Excel ou docx pour Word qui sont placés dans un sous-répertoire nommé Template

    Un exemple de l'affichage des fichiers présents dans un sous répertoire, dans ce billet VBA/Excel - Fonction qui renvoie la liste des fichiers d'un répertoire en fonction d'un critère
    Bonjour Philippe,

    Merci pour votre avis.

    Comme il s'agit d'une check-list et que certaines actions doivent se dérouler dans un certain ordre, je ne souhaite pas laisser le choix à l'utilisateur.
    D'autre part, à moins que je ne me trompe, si on utilise un DOCX ou un XLSX, à moins de l'enregistrer sous un autre nom, on risque de bousiller le modèle et comme mes utilisateurs ne comprennent pas toujours ce genre de subtilité, je préfère leur donner un XLTX ou un DOTX afin de conserver mon modèle intact pour les suivants.

    Par contre, je ne comprends pas très bien pourquoi un XLTX ouvre un XLSX lorsqu'on clique sur le nom du fichier et que ça ne fonctionne pas lorsqu'on clique sur un lien.
    Vous avez une explication ?

    Bien à vous

    Henri

  12. #32
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme il s'agit d'une check-list et que certaines actions doivent se dérouler dans un certain ordre, je ne souhaite pas laisser le choix à l'utilisateur.
    Etant donné que vous évoquez des liens hypertextes, j'en ai déduit que c'était l'utilisateur qui cliquait sur ces liens

    D'autre part, à moins que je ne me trompe, si on utilise un DOCX ou un XLSX, à moins de l'enregistrer sous un autre nom, on risque de bousiller le modèle et comme mes utilisateurs ne comprennent pas toujours ce genre de subtilité, je préfère leur donner un XLTX ou un DOTX afin de conserver mon modèle intact pour les suivants.
    Absolument pas.
    Lorsque j'automatise des tâches répétitives, soit lorsque j'utilise du VBA, j'ouvre toujours les nouveaux documents (Excel ou Word) sur base de modèle en utilisant des fichiers xlsx ou docx stockés dans un sous-répertoire de l'application nommé Template.

    Exemple de l'ouverture d'un nouveau classeur basé sur un modèle nommé Template - Note de Frais.xlsx placé dans le sous-répertoire nommé Template
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub TestOpenTemplate()
      ' Déclaration
      Const SubFolder As String = "Template"
      Const TemplateName As String = "Template - Note de Frais.xlsx"
      Dim wkb As Workbook
      Dim MainDirectory As String ' Répertoire principal
      Dim FullPath As String      ' Chemin complet
      Dim FullName As String      ' Nom complet (répertoire + nom modèle
      '
      MainDirectory = ThisWorkbook.Path
      FullPath = MainDirectory & "\" & SubFolder
      FullName = FullPath & "\" & TemplateName
      Set wkb = Workbooks.Add(Template:=FullName)
      ' Le code
      '
      Set wkb = Nothing
    End Sub
    Par contre, je ne comprends pas très bien pourquoi un XLTX ouvre un XLSX lorsqu'on clique sur le nom du fichier et que ça ne fonctionne pas lorsqu'on clique sur un lien.
    Vous avez une explication ?
    Je n'ai aucune expérience sur l'ouverture de modèle à l'aide de lien hypertexte et comme je n'ai pas l'intention de modifier ma façon de créer des nouveaux fichiers basés sur des "modèles", je ne suis pas très motivé d'en chercher la raison mais je me demande si ce n'est pas lié à Windows. Il y a plusieurs années, j'avais constaté que manuellement et depuis l'explorateur Windows, sur certains PC je pouvais ouvrir un fichier xlt en ouvrant un nouveau document xls et sur d'autres machines pas et il me semble que l'on m'avais répondu que c'était un paramètre Windows à modifier.

    Lorsque je dois travailler avec des liens hypertextes c'est pour éviter l'usage du VBA et dans ce cas, j'utilise la fonction LIEN_HYPERTEXTE bien plus simple à mettre en place et surtout permet un paramétrage en modifiant le contenu d'une ou plusieurs cellules.

    Quelques exemples dans mes billets sur ce sujet
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  13. #33
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Pour éviter tout risque de "sabotage" involontaire d'un template laissé en xlsx (ou docx), il suffit de le passer en lecture seule.
    C'est ce que je fais systématiquement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Ouvrir un etat Access 2003 depuis vb6
    Par TheBlackReverand dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/12/2006, 12h29
  2. Ouvrir un état crystal report depuis VB6
    Par judefei dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/07/2006, 16h52
  3. Réponses: 1
    Dernier message: 02/02/2006, 14h26
  4. Ouvrir une image avec paint depuis un formulaire
    Par gui38 dans le forum Access
    Réponses: 3
    Dernier message: 14/11/2005, 16h40
  5. Ouvrir un fichier MS Project depuis Access
    Par yoyo30 dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2005, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo