Récupérer valeur combobox pour impression excel/word

Ko2i4s

XLDnaute Nouveau
Bonjour a tous,

Je travail sur un projet de "logiciel" d'impression d'étiquettes. J'ai actuellement une combobox me permettant de choisir parmis différents produits :


combobox-1e73a15.jpg


Le dernier choix : Détail , contient le nom du fichier a imprimer (sans le ".doc")


Code:
Private Sub UserForm_Initialize()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range("catégorie")
    If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
  Me.ComboBox1.List = MonDico.items
End Sub
Private Sub ComboBox1_Change()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For i = 1 To Range("Produit").Count
    If Range("Catégorie")(i) = Me.ComboBox1 Then
      temp = Range("Produit")(i)
      If Not MonDico.Exists(temp) Then MonDico.Add temp, temp
    End If
  Next i
  Me.ComboBox2.List = MonDico.items
  Me.ComboBox2.ListIndex = -1
  Me.ComboBox3.ListIndex = -1
End Sub
Private Sub ComboBox2_Change()
  Set MonDico = CreateObject("Scripting.Dictionary")

  For i = 1 To Range("Detail").Count
    If Range("Produit")(i) = (Me.ComboBox2) And Range("Catégorie")(i) = Me.ComboBox1 Then
       temp = Range("Detail")(i)
       If Not MonDico.Exists(temp) Then MonDico.Add temp, temp
    End If
  Next i
  Me.ComboBox3.List = MonDico.items
  Me.ComboBox3.ListIndex = -1
  
  
End Sub
Private Sub ComboBox3_Change()

''''MsgBox ("text")
''''Msg = "Vous avez choisi:   " & ComboBox1.Value & "/" & (ComboBox2.Value) & "/" & ComboBox3.Value
''''  Style = vbOKOnly + vbInformation
''''   Title = "Plactic Omnium"
''''   Response = MsgBox(Msg, Style, Title)
Monfichier = ComboBox1.Value & "/" & (ComboBox2.Value) & "/" & ComboBox3.Value
MsgBox (Monfichier)
   Call ouvrirDocWord_Impression
End Sub

Ainsi qu'un module d'impression de excel vers word :

Code:
Sub ouvrirDocWord_Impression() 'necesite d'activer la reference Microsoft Word xx.x Object Library (=> outils => references)

Dim appWrd As Object
Dim docWord As Object
Dim Message As String
Dim Default As Integer
Dim Fichier As String
Dim Title As String
Dim Monfichier As String

Message = "Entrez le nombre d'étiquettes souhaités :"
Title = "PARAMETRES IMPRESSION ETIQUETTES"
Default = "1"

MsgBox Monfichier

Message_Texte = InputBox(Message, Title, Default)
        Controle_Message_Texte = IsNumeric(Message_Texte)
        
            If Controle_Message_Texte = False Then
            
                Message_Texte = MsgBox("Veuillez entrer une valeur numérique", vbCritical)
                
            Else
            
                Nombre_Impression = Message_Texte
                
                   Set AppWord = CreateObject("Word.Application")
                   Set docWord = AppWord.Documents.Open("D:\Programme_etiquettes\Etiquettes\Monfichier.doc", ReadOnly:=True)
                   
                   AppWord.Visible = False
                   AppWord.PrintOut Copies:=Nombre_Impression
                   
                   MsgBox ("UNE FOIS L'IMPRESSION TERMINEE VOUS POUVEZ APPUYER SUR N'IMPORTE QUEL TOUCHE") 'contrôle de la fin d'impression
                   
                   AppWord.Quit
                   Set AppWord = Nothing
                   Set docWord = Nothing
                   
            End If

Sheets(1).Activate 'activation de la feuille1
ActiveSheet.Range("E7").Activate 'retour en D18

End Sub

Mon probleme se situe au niveau de la variable : monfichier.:confused:
Je n'arrive pas a récupérer le nom du fichier sélectionné dans la combobox, pour l'ajouter au chemin d'accès:

Code:
 Set docWord = AppWord.Documents.Open("D:\Programme_etiquettes\Etiquettes\Monfichier.doc", ReadOnly:=True)
et ainsi pouvoir lancer l'impression .:cool:

J'ai essayé avec plusieurs syntaxes différentes, sans succès.

J'espère avoir été clair, et j'attend vos propositions avec impatience.. Car la je bloque :eek:

Cordialement
 
Dernière édition:

Caillou

XLDnaute Impliqué
Re : Récupérer valeur combobox pour impression excel/word

Bonjour,

1.Il faut déclarer la variable Monfichier en private ou public pour qu'elle puisse être "connue" de toutes les procédures.

Donc dans la partie déclatative du moduele (tout en haut) :
Code:
Public Monfichier As String

2.Ensuite pour l'intégrer au chemin d'accès, il faut utiliser le & (opérateur de concaténation)
Code:
Set docWord = AppWord.Documents.Open("D:\Programme_etiquettes\Etiquettes\" & Monfichier & ".doc", ReadOnly:=True)

Caillou
 
G

Guest

Guest
Re : Récupérer valeur combobox pour impression excel/word

bonjour

Ce doit - être quelque chose comme ceci, sans-doute:
Modifications en rouge.
Code:
Private Sub ComboBox3_Change()

''''MsgBox ("text")
''''Msg = "Vous avez choisi:   " & ComboBox1.Value & "/" & (ComboBox2.Value) & "/" & ComboBox3.Value
''''  Style = vbOKOnly + vbInformation
''''   Title = "Plactic Omnium"
''''   Response = MsgBox(Msg, Style, Title)
Monfichier = ComboBox1.Value & "/" & (ComboBox2.Value) & "/" & ComboBox3.Value
MsgBox (Monfichier)
   Call ouvrirDocWord_Impression [COLOR=red][B]MonFichier[/B][/COLOR]
End Sub

Code:
Sub ouvrirDocWord_Impression([COLOR=red][B]ByVal StrFichier As string[/B][/COLOR]) 'necesite d'activer la reference Microsoft Word xx.x Object Library (=> outils => references)

Dim appWrd As Object
Dim docWord As Object
Dim Message As String
Dim Default As Integer
Dim Fichier As String
Dim Title As String


Message = "Entrez le nombre d'étiquettes souhaités :"
Title = "PARAMETRES IMPRESSION ETIQUETTES"
Default = "1"

MsgBox Monfichier

Message_Texte = InputBox(Message, Title, Default)
        Controle_Message_Texte = IsNumeric(Message_Texte)
        
            If Controle_Message_Texte = False Then
            
                Message_Texte = MsgBox("Veuillez entrer une valeur numérique", vbCritical)
                
            Else
            
                Nombre_Impression = Message_Texte
                
                   Set AppWord = CreateObject("Word.Application")
                   Set docWord = AppWord.Documents.Open([B][COLOR=#ff0000]StrFichier[/COLOR][/B], ReadOnly:=True)
                   
                   AppWord.Visible = False
                   AppWord.PrintOut Copies:=Nombre_Impression
                   
                   MsgBox ("UNE FOIS L'IMPRESSION TERMINEE VOUS POUVEZ APPUYER SUR N'IMPORTE QUEL TOUCHE") 'contrôle de la fin d'impression
                   
                   AppWord.Quit
                   Set AppWord = Nothing
                   Set docWord = Nothing
                   
            End If

Sheets(1).Activate 'activation de la feuille1
ActiveSheet.Range("E7").Activate 'retour en D18

End Sub

A+
 

datacell33

XLDnaute Nouveau
Re : Récupérer valeur combobox pour impression excel/word

Pas évident sans avoir tout le code sous les yeux, mais plusieurs remarques :

Code:
Monfichier = ComboBox1.Value & "/" & (ComboBox2.Value) & "/" & ComboBox3.Value
MsgBox (Monfichier)
   Call ouvrirDocWord_Impression

1/ pourquoi ajoutes-tu des "/" dans le noms du fichier, ça ressemble à de l'unix? en Dos/Windows, on met des "\".
2/ quand tu appelles ta procédure ouvrirDocWord_Impression, tu n'a pas de paramètre. Tu as bien déclaré la variable Monfichier comme variable globale ?

Dans le code suivant :

Code:
Set docWord = AppWord.Documents.Open("D:\Programme_etiquettes\Etiquettes\Monfichier.doc", ReadOnly:=True)

Monfichier.doc existe vraiment ou c'est un bout de code pour le test ? J'avais compris que Monfichier est une variable.

Sinon, pour ouvrir le document word nommé :
C:\Mes Documents\toto.doc, on peut écrire :

Code:
Set WordApp = New Word.Application
Set WordDoc = WordApp.Documents.Open("C:\Mes Documents\toto.doc")

Donc ça a l'air bon cette partie si le fichier précisé existe bien. J'ai pas testé avec le Readonly cependant.

Bon courage !
 

Ko2i4s

XLDnaute Nouveau
Re : Récupérer valeur combobox pour impression excel/word

Bonjour,

1.Il faut déclarer la variable Monfichier en private ou public pour qu'elle puisse être "connue" de toutes les procédures.

Donc dans la partie déclatative du moduele (tout en haut) :
Code:
Public Monfichier As String

2.Ensuite pour l'intégrer au chemin d'accès, il faut utiliser le & (opérateur de concaténation)
Code:
Set docWord = AppWord.Documents.Open("D:\Programme_etiquettes\Etiquettes\" & Monfichier & ".doc", ReadOnly:=True)

Caillou

merci pour cette réponse rapide :p
Et ca fonctionne !!!!:D:D:D

Merci encore et a bientot
 

Ko2i4s

XLDnaute Nouveau
Re : Récupérer valeur combobox pour impression excel/word

Effectivement datacell, j'ai fait une erreur au niveau des slashs :)
J'ai déclarer la variable "monfichier" en public, et réaliser la concaténation en suivant l'exemple de caillou, et ca fonctionne ;)

Merci encore a tous pour votre aide
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT