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 :

Depuis VBA, ouvrir un .jpg, .gif, etc. dont le nom contient un espace, avec mspaint


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut Depuis VBA, ouvrir un .jpg, .gif, etc. dont le nom contient un espace, avec mspaint
    Tout est dans le titre mais j'explique :
    J'utilise VBA pour ouvrir un fichier image par l'intermédiaire de mspaint.
    Permet de modifier le fichier avant un simple copier/coller.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("C:\WINDOWS\SYSTEM32\mspaint.exe " & NomFich, 3)
    Si le nom du fichier ne contient pas d'espace, pas de problème, tout se déroule normalement.
    Mais s'il en contient un, il n'est pas reconnu.
    J'ai testé avec ShortName mais il n'est resté que "Le" dans le nom du fichier (pour "Le truc.gif")
    Il doit bien exister une solution puisque Paint le fait sans rechigner quand il est utilisé directement.
    C'est cette solution qu'il me faudrait.
    Par avance merci.

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, ousk,

    Si le nom de ton fichier contient des espaces ===>> mets-le entre guillemets, ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command1_Click()
      nomfich = """d:\sans titre.bmp"""
      Call Shell("C:\WINNT\SYSTEM32\mspaint.exe " & nomfich, 3)
    End Sub
    Ceci étant, j'utiliserais plutôt ShellExecute (je n'aurais alors pas besoin d'utiliser le chemin de MsPaint.exe )

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Tiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
     
    Private Declare Function FindWindowA Lib "user32" _
      (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
    Const SW_SHOWNORMAL = 1
     
    Private Sub Command1_Click()
      Dim leHwnd As Long, monfich As String
      monfich = """d:\sans titre.bmp"""
      leHwnd = FindWindowA(vbNullString, Me.Caption)
      ShellExecute leHwnd, vbNullString, monfich, vbNullString, "C:\", SW_SHOWNORMAL
    End Sub
    Toi, avec VBA qui n'a pas de handle de Userform, il te faut rajouter ce handle
    avec une fonction supplémentaire (tu l'as dans la FAQ) et( uytiliser le hwnd trouvé, à la place de me.hwnd

    EDIT : j'ai complété pour toi (VBA) en ce qui concerne le handle.

    Inutile de te préciser que si tu mets des guillemets alors que le nom n'a pas d'espaces, cela marche également, bien sûr, si bien que tu peux systématiquement ajouter les guillemets.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Salut Ouskel'n'or,

    Face à ce problème, j'aurais essayé de "découper" le nom du fichier et de le reconstruire : exemple "Le truc.gif" deviendrait "L", "e", " ", "t",....avec une boucle style "right(nomfich,i)", ensuite je le regrouperais en faisant "nomfichier=right(nomfich,1) & right(nomfich,2) & ....".
    puis : "Call Shell("C:\WINDOWS\SYSTEM32\mspaint.exe " & nomfichier, 3)

    Le VBA reconnaitrait peut-être l'espace à ce moment ....

    (Je sais que je n'ai pas le niveau, mais j'essaye de "te renvoyer la pareille", tu as toujours été sympa de m'aider à trouver , eput-être que cette piste pourra t'aider...)

    A+

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, ericdev67

    Pourquoi se lancer dans tout ce mic-mac ?
    Il suffit de mettre entre guillemets !

    Edit (j'en profite) : Ousk, si tu veux en plus que la fenêtre de Paint s'ouvre à l'intérieur de ton UserForm, tu dis ...
    Et si tu veux en plus que l'on inhibe le menu de paint, tu dis également (on sait faire)

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Salut ucfoutu,



    T'as raison, les solutions les plus simples sont les meilleures.....J'ai zappé ta dernière remarque "Inutile de te préciser que si tu mets des guillemets alors que le nom n'a pas d'espaces, cela marche également, bien sûr, si bien que tu peux systématiquement ajouter les guillemets"

    Skuz

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Proc SQL sur des variables dont le nom contient des espaces
    Par Oreo_ dans le forum SAS Base
    Réponses: 3
    Dernier message: 23/05/2013, 16h20
  2. Réponses: 3
    Dernier message: 26/07/2011, 19h27
  3. Réponses: 1
    Dernier message: 06/09/2010, 17h48
  4. copy dans un dossier dont le nom contient un espace
    Par amirym dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 23/06/2007, 19h54
  5. Réponses: 11
    Dernier message: 26/04/2007, 16h34

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