Convertir une image .tif en format .bmp ? (Et/ou utiliser une feinte)

SERIEUXETCOOL

XLDnaute Occasionnel
Bonjour le Forum,

Avec l'aide du Forum, j'ai développé un code sous vba qui me conviens pratiquement. Il y a toute fois une astuce que j'aimerais employer avec votre aide.

Contexte :

Les image sur lesquelles je travaille sont au format .bmp sinon plus rien n'est fonctionnel par la suite si ces images ne sont pas en .bmp. Je dois donc ouvrir une image qui est au format .bmp.

J'aimerais maintenant pouvoir ouvrir des images enregistrées au format .tif. Et c'est la que je suis bloqué. J'aurais voulu savoir s'il était possible de proposer un code simple et efficace qui me permette d'ouvrir des images au format .bmp ET au format .tif.
Si les images sont au format .tif, alors il faut convertir temporairement cette image en .bmp pour que je puisse travailler avec et la supprimer ensuite pour ne pas encombrer le système.

Quelqu'un pourrait il m'apporter un peu d'aide ?

J'utilise la boite de dialogue "getopenfilename" pour proposer à l'utilisateur d'ouvrir soit des .bmp soit des .tif et récupérer le chemin du fichier. Si l'image ouverte est au format .tif, alors il faut la convertir en .bmp avant de pouvoir travailler dessus.

Voila en gros ce que je cherche à faire. Actuellement je dois manuellement ouvrir mes images .tif et les enregistrer sous au format .bmp pour ensuite pouvoir les traiter.


Merci à ceux qui oseront m'aider un peu.


Bien cordialement,

André
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Convertir une image .tif en format .bmp ? (Et/ou utiliser une feinte)

Merci Dranreb de te pencher sur la question.

Tu voudrais donc piloter Paint au travers de Vba ? Est ce bien cela que tu voulais dire. C'est en tout cas ce que j'ai compris.

Je n'ai jamais piloté de logiciels autre qu'Excel sous vba...
 

Dranreb

XLDnaute Barbatruc
Re : Convertir une image .tif en format .bmp ? (Et/ou utiliser une feinte)

Extrait du code source de mon petit programme Couleurs.exe écrit en VB6:
VB:
Private Static Sub BtPaint_Click()
Const PgmPaint = "C:\WINDOWS\System32\MSPaint"
Dim PaintId As Variant, Z As String, Top As Long, Problème As String
Caption = "Couleurs - Transmettre à Paint"
Z = ""
Do:
   If IsEmpty(PaintId) Then
      PaintId = InputBox(Z & "Entrez le titre exact d'une fenêtre Paint existante," _
         & vbLf & "sinon Couleurs va tenter de lancer :" & vbLf & """" & PgmPaint & """.", _
         Caption, "Sans titre - Paint"): Z = ""
      If PaintId = "" Then
         On Error Resume Next: PaintId = Shell(PgmPaint, 1): Problème = Err.Description: On Error GoTo 0
         If Problème <> "" Then
            MsgBox "Shell """ & PgmPaint & """: " & Problème & vbLf _
               & "Veuillez lancer Paint par vous-même.", vbCritical, Caption
            PaintId = Empty: GoTo Épilogue: End If
         Z = "MSPaint N°" & PaintId & " lancé…": End If: End If
   Top = GetTickCount
   While GetTickCount < Top + 1000: DoEvents
      On Error Resume Next: AppActivate PaintId, Wait:=False: Problème = Err.Description: On Error GoTo 0
      If Problème = "" Then Exit Do
      Wend
   If TypeName(PaintId) = "String" Then Z = "Fenêtre """ & PaintId & """" Else Z = "MSPaint N°" & PaintId
   Z = Z & " introuvable." & vbLf: PaintId = Empty
   Loop
SendKeys "%CM%D%R" & TR.Text & "%V" & TV.Text & "%B" & TB.Text & "~", Wait:=True
Épilogue: Caption = "Couleurs"
End Sub
Tout le pilotage se situe dans le SendKeys. Là il envoie des contenus de TextBox dans les champs Rouge, Vert Bleu de la définition d'une couleur personnalisée dans Paint.
Il utilise aussi une déclaration d'un autre module:
VB:
Public Declare Function GetTickCount Lib "kernel32.dll" () As Long
Cordialement
 
Dernière édition:

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Convertir une image .tif en format .bmp ? (Et/ou utiliser une feinte)

Merci dranreb pour ton extrait de code.

J'ai bien réussi à ouvrir paint avec ton code. Mais pas encore à ouvrir mon image tif, n'y même à enregistrer en image bmp.

Je me pose tout de même une question avant de passer plus de temps sur paint...Est-ce la façon la plus simple pour ouvrir une image tif, et enregistrer en image bmp ?

Quand je le fait manuellement, j'utilise le programme aperçu. C'est sans doute pareil que paint. Mais il y a t'il une façon plus commode pour faire cette opération ?
De toute manière, utiliser paint ou aperçu c'est du pareil au même non ?


André
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Convertir une image .tif en format .bmp ? (Et/ou utiliser une feinte)

Je viens de réussir à ouvrir mon image tif avec le programme aperçu de Windows via vba

voici le code que j'utilise...

Code:
Sub test()

    Dim chemin As String
    chemin = "E:\STATIQUE.tif"
    
    Shell ("rundll32.exe c:\windows\system32\shimgvw.dll,ImageView_Fullscreen" & " " & chemin)

End Sub


Sa fonctionne très bien. Maintenant je souhaiterais enregistrer cette image au format bmp via vba.

Comment devrais-je m'y prendre très simplement ? Le but c'est vraiment de résoudre mon problème en 10 lignes de code maxi...

André
 

Pierrot93

XLDnaute Barbatruc
Re : Convertir une image .tif en format .bmp ? (Et/ou utiliser une feinte)

Bonjour,
Comment devrais-je m'y prendre très simplement ? Le but c'est vraiment de résoudre mon problème en 10 lignes de code maxi...

peut être utiliser un logitiel de dessin.... A ma connaissance pas une fonction native d'Excel..... Si en plus on est limité en nombre de lignes de code...

bonne journée
@+
 

Dranreb

XLDnaute Barbatruc
Re : Convertir une image .tif en format .bmp ? (Et/ou utiliser une feinte)

Bonjour
Voyez ce que donnent les touches Tab, Alt ou Ctrl quelque chose, Entrée, etc. Faites la chasse aux raccourcis claviers indiqués derrière les options des menus. Il y en a absolument partout dans Paint, c'est pourquoi c'est très facile de le piloter par des simulations de frappes envoyées par SendKeys.
P.S. Etudiez bien l'aide sur SendKeys aussi pour bien maitriser la simulation des combinaisons de touches de contrôle.
À +
 
Dernière édition:

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Convertir une image .tif en format .bmp ? (Et/ou utiliser une feinte)

Salut Pierrot93,

Je ne demande pas 10 lignes de code exclusivement^^. C'était une image. Disons que si j'arrive à ouvrir mon image tif en 2 lignes seulement, j'imaginais que l'on pouvait faire fichier enregistrer sous en 4 lignes également. Donc un petit bout de code d'une dizaine de lignes.

Mais en fait sa ne fonctionne pas aussi simplement que je ne me l'imaginais. On ne peut pas piloter à proprement parler un logiciel Windows avec VBA de manière simple. Maintenant je le sais.

De même qu'avec paint tout se fera avec des sendkeys simulant des raccourcis clavier. Je pensais que l'on pouvait accéder aux menus des programmes et tout moi^^

L'utilisation du mot "poiloter" paint est pour moi un abusive dans ce cas. On se sert d'une astuce pour feinter que l'on pilote le logicel par vba. Mais en réaliter on ne fait pas grand chose^^

Mais c'est bien de le savoir en tout cas. Je suis éclairé.

Dans ce cas la, j'ai plutôt intérêt à me servir du code que j'ai proposé au début. Il m'ouvre déjà mon image tif sous "aperçu". Ne me reste plus qu'à jouer sur les raccourcis clavier qui vont bien.


Je vais tester un peu sa...


Merci pour m'avoir éclairé un peu plus.

André
 

Discussions similaires