Gestion de fichiers pour interface graphique

Résolu
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011 - 13 avril 2011 à 10:54
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011 - 26 avril 2011 à 10:51
Actuellement étudiant je viens de me mettre à VB6 pour mon plaisir personnel, en attaquant par de petite interface graphique, malheureusement tout ce qui se reporte au script est peu compréhensible pour moi.

Je vous présente grossièrement mon interface:
Dans ma liste déroulante j'ai 8 noms de tours aéroréfrigérantes, pour chacune de ces tours j'ai 2 fichiers exel (suivi de consommation et suuvi légio) et 2 fichiers word (description de la tour et expertise d'expert).

Le but est de selectionner la tour qui m'intéresse, appuyer sur exécuter là la liste des 4 fichiers (2 word + 2 exel) apparait dans ma filelistbox, je selectionne celui qui m'intéresse et je l'ouvre(lecture seule), le modifie(ouverture + modification) ou l'imprime

Voilà l'image c'est juste un plan de l'usine...

J'ai réussie à remplir la liste déroulante (je sais je sais c'est pas grand chose ); et j'aurais besoin d'aide pour la suite.

Merci d'avance

62 réponses

fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
19 avril 2011 à 13:11
Yes sa marche, bon il faut encore que je peaufine encore tout ça.

Encore un grand merci.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
19 avril 2011 à 16:30
Re

Je suis de retour pour une petite question,

Pour mon bouton imrpimer qu'est ce qui serais le plus simple pour moi:

le code suivant :

Select Case Right(File1.FileName, 4)
Case ".xls"
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
xlApp.Workbooks.Open FileName:=File1.Path & "" & File1.FileName
retour = MsgBox("Imprimer ce fichier ?", vbYesNo, "Imprimer")
    If retour = vbYes Then ThisWorkbooks.PrintOut
    
Case ".doc"
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open(File1.Path & "" & File1.FileName)
retour = MsgBox("Imprimer ce fichier ?", vbYesNo, "Imprimer")
    If retour = vbYes Then ThisDocuments.PrintOut
    
  
End Select



Ou alors utiliser un CommonDialog ?
0
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
19 avril 2011 à 18:17
l'impression directe est le mieux bien sûr...

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
20 avril 2011 à 09:46
Bonjour bonjour,

Encore un grand merci pour toute votre aide, je passe à l'installation de mon executable sur un autre pc que le mien, mon interface marche bien, sauf le bouton imprimer, lorsque que je clique dessus j'ai une erreur d'execution 424, je pense que cela vient du fait que j'ai 2imprimantes ?

Qu'en pensez-vous ?

Voilà mon code final:
Private Sub Cbo_TAR_Click()

Select Case Me.Cbo_TAR.Text 'Selection de la liste déroulante
Case "Chabal (Fonderie)"
File1.Path = "C:\STAGE\CHABAL"
Case "DSR (Tôlerie)"
File1.Path = "C:\STAGE\DSR"
Case "PF 301 (Filage)"
File1.Path = "C:\STAGE\PF301"
Case "F 132 (Fonderie refusion copeaux)"
File1.Path = "C:\STAGE\F132"
Case "F 212/219 (Atelier Tôles Fortes)"
File1.Path = "C:\STAGE\F212-219"
Case "F 230 (Atelier Tôles Fortes)"
File1.Path = "C:\STAGE\F230"
Case "F 233 (Atelier Tôles Fortes)"
File1.Path = "C:\STAGE\F233"
Case "F 235 (Atelier Tôles Fortes)"
File1.Path = "C:\STAGE\F235"

End Select
End Sub



Private Sub Cmd_imprimer_Click(Index As Integer)

Select Case Right(File1.FileName, 4)
Case ".xls"
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
xlApp.Workbooks.Open FileName:=File1.Path & "" & File1.FileName
retour = MsgBox("Imprimer ce fichier ?", vbYesNo, "Imprimer") 'fenetre de confirmation d'impression
    If retour = vbYes Then ThisWorkbooks.PrintOut 'si oui on imprime
    
Case ".doc"
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open(File1.Path & "" & File1.FileName)
retour = MsgBox("Imprimer ce fichier ?", vbYesNo, "Imprimer") 'fenetre de confirmation d'impression
    If retour = vbYes Then ThisDocuments.PrintOut 'si oui on imprime
    
  
End Select
End Sub

Private Sub Cmd_modifier_Click(Index As Integer)

Select Case Right(File1.FileName, 4) 'filtration de l'extention
Case ".xls" 'filtration de l'extention
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
xlApp.Visible = True 'ouverture de la fenêtre visible
xlApp.Workbooks.Open FileName:=File1.Path & "" & File1.FileName 'ouverture du fichier sélectionner dans filelistbox

Case ".doc" 'filtration de l'extention
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True 'ouverture de la fenêtre visible
Set WordDoc = WordApp.Documents.Open(File1.Path & "" & File1.FileName) 'ouverture du fichier sélectionner dans filelistbox

End Select
End Sub

Private Sub Cmd_ouvrir_Click()

Select Case Right(File1.FileName, 4)
Case ".xls"
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
xlApp.Visible = True
xlApp.Workbooks.Open FileName:=File1.Path & "" & File1.FileName, ReadOnly:=xlYes 'ouverture en lecture seule

Case ".doc"
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open(File1.Path & "" & File1.FileName, ReadOnly:=True) 'ouverture en lecture seule

End Select
End Sub

Private Sub Form_Load()

Lbl_1.Caption = "Sélectionner une tour aéroréfrigérante :" 'remplissage de la liste déroulante
Cbo_TAR.AddItem "Veuillez sélectionne une TAR", 0
Cbo_TAR.AddItem "Chabal (Fonderie)", 1
Cbo_TAR.AddItem "DSR (Tôlerie)", 2
Cbo_TAR.AddItem "PF 301 (Filage)", 3
Cbo_TAR.AddItem "F 132 (Fonderie refusion copeaux)", 4
Cbo_TAR.AddItem "F 212/219 (Atelier Tôles Fortes)", 5
Cbo_TAR.AddItem "F 230 (Atelier Tôles Fortes)", 6
Cbo_TAR.AddItem "F 233 (Atelier Tôles Fortes)", 7
Cbo_TAR.AddItem "F 235 (Atelier Tôles Fortes)", 8




Cbo_TAR.ListIndex = 0 'écriture par défaut dans la liste déroulante à l'ouverture

Img1.Picture = LoadPicture("C:\STAGE\plan.jpg") 'affichage du plan à l'ouverture
Img2.Picture = LoadPicture("C:\STAGE\logo.jpg") 'affichage du logo à l'ouverture


End Sub


Private Sub Form_Resize() 'fonction pour redimmensionnement des contrôles de la fenêtre lors de l'agrandissement de celle-ci

    Dim Feuille As Form

    Set Feuille = Screen.ActiveForm

    If (Feuille.WindowState = vbMinimized) Then

        Exit Sub

    End If

    Static Longueur As Long

    Static Hauteur As Long

    Dim PropLongueur As Single

    Dim PropHauteur As Single

    If ((Longueur > 0) And (Hauteur > 0)) Then

        PropLongueur = Feuille.Width / Longueur

        PropHauteur = Feuille.Height / Hauteur

        Dim Ctrl As Control

        On Error Resume Next

        For Each Ctrl In Feuille.Controls

            Ctrl.Left = CInt(Ctrl.Left * PropLongueur)

            Ctrl.Top = CInt(Ctrl.Top * PropHauteur)

            Ctrl.Width = CInt(Ctrl.Width * PropLongueur)

            Ctrl.Height = CInt(Ctrl.Height * PropHauteur)

        Next

        On Error GoTo 0

    End If

    Longueur = Feuille.Width
    Hauteur = Feuille.Height
End Sub



Encore merci d'avance...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
20 avril 2011 à 10:34
Tu trouves pas que ton code répéte toujours la même chose à une exception prêt (impression, lecture seule)... il faudrait faire une petite méthode avec paramètre qui gére tout non... du genre :

Private Sub Generedoc(Byval chemin as string,Byval lectureSeule as boolean,Byval  Impression as boolean)
   ' à implémenter selon les cas...
end sub


ensuite dans les méthodes clic tu fais appelle à la méthode...

En ce qui concerne ton cas erreur as-tu déclaré retour ????mais de toute façon pour la question voulez-vous imprimer écrit le plutôt comme ça :
If MsgBox("Imprimer ce fichier ?", vbYesNo, "Imprimer") = vbYes Then
    wb.PrintOut
End If


-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
20 avril 2011 à 12:37
Re

Voilà je viens de créer l'executable de mon interface pour pouvoir la mettre sur n'importe quel ordinateur.

Comme j'ai 2 imprimantes réliées à cette ordinateur j'ai voulu mettre une commondialog pour sélectionner l'imprimante que je veux utiliser.

Voilà le code pour mon bouton Imprimer

Private Sub Cmd_imprimer_Click(Index As Integer)
Select Case Right(File1.FileName, 4) 'Récupère les 4 derniers caractères
Case ".xls" 'Récupération de l'extension xls (fichier excel)
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
CommonDialog.ShowPrinter
xlApp.PrintOut

Case ".doc" 'Récupération de l'extension doc (fichier word)
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application")
CommonDialog.ShowPrinter
WordApp.PrintOut

End Select
End Sub


La fenêtre sélectionner s'ouvre bien lorsque je clique sur le bouton, je peux bien sélectionner l'imprimante que je veux mais lorsque que je clique sur 'ok' il s'affiche:
"Erreur d'execution '4605' Cette methode n'est pas disponible car une fenêtre de document n'est pas active"

Comment dois-je faire, je ne comprend pas ?
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
20 avril 2011 à 14:26
Yeah sa marche, j'ai rajouté un ligne xlApp.quit et wordApp.quit, car les fenêtre étaient certes pas visible mais elles étaient bien ouverte.

Voilà mon interface marche du feu de dieu .

Sa votre aide je pense qu'elle n'aurait jamais fonctionnée.

Encore un très grand merci pour votre aide et surtout pour votre patience.

Au revoir
0
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
20 avril 2011 à 15:36
Y'as pas de mal...

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
21 avril 2011 à 11:20
Bonjour bonjour,

et oui je suis de retour, pour l'ultime question, la der des ders.

Voilà j'aimerais savoir s'il serait possible de rajouter les fichier .pdf à mon interface, donc s'il serait possible d'avoir un code (comme pour les fichiers excel et word) pour ouvrir, modifier et imprimer les fichiers pdf ??
0
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
21 avril 2011 à 12:36
Salut,

C'est des pdf modifiable?

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
21 avril 2011 à 13:00
Non ce sont surtout des résultats d'analyses, déclaration qui sont envoyés par mail, donc pas modifiable!
0
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
21 avril 2011 à 14:02
alors si c'est juste pour les ouvrir ou les imprimer...

tu mets ça tout en haut :
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


pour l'impression :
ShellExecute Me.hwnd, "print", "D:\CRA" & File1.FileName, vbNullString, vbNullString, SW_SHOWNORMAL


pour les ourvir :
ShellExecute Me.hwnd, "open", "D:\CRA" & File1.FileName, vbNullString, vbNullString, SW_SHOWNORMAL


voilà...

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
21 avril 2011 à 14:21
Qu'est ce que c'est "shell32.dll" c'est pas une sorte de librairie comme pour word et excel ? Il ne faut pas rajouter une référence au projet ?
0
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
21 avril 2011 à 14:53
Pardon oui désolé...

shell32.dll est une librairie du system windows... tu n'as donc pas besoin de l'importer...

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
21 avril 2011 à 15:03
Ok ok,

je ne comprend pas lorsque je clique il ne se passe rien à quoi correspond les éléments de la ligne

ShellExecute Me.hwnd, "open", "D:\CRA"  & File1.FileName, vbNullString, vbNullString, SW_SHOWNORMAL
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
21 avril 2011 à 15:17
Non c'est bon j'ai bidouillé un peu c'est bon sa marche, je vais essayer l'impression maintenant.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
21 avril 2011 à 15:30
Par contre comment éviter lorsque que je clique sur imprimer qu'il y est une fenêtre adobe qui s'ouvre (elle est vide mais s'ouvre en même temps que la commondialog) ?
0
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
21 avril 2011 à 15:41
fais voir ta fonction imprimer!!!

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
fattosh Messages postés 38 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 26 avril 2011
21 avril 2011 à 15:49
ah oui désolé...

La voilà, ce qui est en commentaire n'est pas important c'est que mon code marche pas encore à 100%.
J'ai mis un controle commondialog, je peux choisir l'imprimante sans souci et celà imprime bien !
Mais si je change les propriétés (nombre de copies, recto verso ...etc) , elles ne sont pas prises en compte.
j'ai un autre souci avec mon bouton "imprimer" lorsque que la commondialog s'ouvre même si je clique sur la "petit croix" pour fermer la fenêtre elle imprime quand même le document.

Bref

Voici mon code:
Private Sub Cmd_imprimer_Click(Index As Integer)

Select Case Right(File1.FileName, 4) 'Récupère les 4 derniers caractères
Case ".xls" 'Récupération de l'extension xls (fichier excel)
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
xlApp.Workbooks.Open FileName:=File1.Path & "" & File1.FileName
CommonDialog.ShowPrinter
'Printer.hDC = CommonDialog.hDC
'Printer.Copies = CommonDialog.Copies
'Printer.Duplex = CommonDialog.Duplex
'Printer.PaperSize = CommonDialog.PaperSize
'Printer.PrintQuality = CommonDialog.PrintQuality
'Printer.Orientation = CommonDialog.Orientation
'Me.PrintForm: DoEvents
'Printer.EndDoc: DoEvents
xlApp.PrintOut
xlApp.Quit


Case ".doc" 'Récupération de l'extension doc (fichier word)
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open(File1.Path & "" & File1.FileName)
CommonDialog.ShowPrinter
'Printer.hDC = CommonDialog.hDC
'Printer.Copies = CommonDialog.Copies
'Printer.Duplex = CommonDialog.Duplex
'Printer.PaperSize = CommonDialog.PaperSize
'Printer.PrintQuality = CommonDialog.PrintQuality
'Printer.Orientation = CommonDialog.Orientation
'Me.PrintForm: DoEvents
'Printer.EndDoc: DoEvents
WordApp.PrintOut
WordApp.Quit

Case ".pdf"
ShellExecute Me.hwnd, "print", File1.Path & "" & File1.FileName, vbNullString, vbNullString, SW_SHOWNORMAL
CommonDialog.ShowPrinter

End Select
End Sub
0
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
21 avril 2011 à 16:13
le soucis que le shellexecute imprime direct avec l'imprimante par défault. Pourquoi ne pas prendre l'imprimante par défault au lieu d'ouvrir toujours cette boite de dialogue....idem pour les Words et excel...



-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
Rejoignez-nous