Inclure un objet dans une picturebox [Résolu]

Coconut29200 15 Messages postés mercredi 4 avril 2007Date d'inscription 4 juin 2007 Dernière intervention - 4 avril 2007 à 09:57 - Dernière réponse : jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention
- 4 avril 2007 à 12:02
Bonjour

je cherche,je cherche mais je n'ai toujours pas trouvé comment attaché un objet à une picture box

Plus de précision :

la picturebox est crée à la base et je creer un objet dynamiquement
avec un "truc" de ce genre :    
     

Private Sub Command1_Click()

Set c = Me.Controls.Add("vb.combobox", "mes2")

c.visible = true

c.top= blabla

c.height = blabla

.....

end sub


Comment faire pour que quand je fasse

picture1.visible = false

l'objet(ici le combobox)qui se trouve dedans disparaisse aussi


Merci
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 4 avril 2007 à 10:07
3
Merci
Salut,
Il faut qu'à l'ajout du contrôle tu spécifie l'objet qui le contient (Propriété Container) ici tu veux que le combo soit dans Picture1
donc par exemple

Dim c As Control
Set c = Me.Controls.Add("vb.combobox", "mes2")
c.Visible = True
c.Top = 30
c.Left = 40
Set c.Container = Picture1, ----
[code.aspx?ID=41455 By Renfield]
ATTENTION: si je me souvient bien, les propriété left, top, sont donc par rapport a la picturebox

@+: Ju£i?n
Pensez: Réponse acceptée

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 85 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 4 avril 2007 à 10:52
3
Merci
Salut,
Si tu veux charger tes combo et joué avec leur propriété index, tu dois les charger différement.
D'abord tu dois créer un groupe de contrôle.
Place un combo sur ta feuille et mets sa propriété Index à 0

Puis teste l'exemple suivant.
Il te crée 4 nouveaux combo et les place dans la picture box
Libre à toi d'utiliser ou non le contrôle de "base" (tu peux joue avec visible si tu veux juste qu'il soit la source)

Private Sub Command1_Click()
Dim i As Integer
   For i = 1 To 4
       'Charge le controle d'indice i
       Call Load(Combo1(i))
       With Combo1(i)
           'Spécifie le conteneur
           Set .Container = Picture1
           .Visible = True
           .Top = (i - 1) * Combo1(0).Height
           .Left = 15
       End With
   Next

End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 85 internautes ce mois-ci

Commenter la réponse de jrivet
Coconut29200 15 Messages postés mercredi 4 avril 2007Date d'inscription 4 juin 2007 Dernière intervention - 4 avril 2007 à 10:17
0
Merci
Marche nikel

Merci Beaucoup!
Commenter la réponse de Coconut29200
Coconut29200 15 Messages postés mercredi 4 avril 2007Date d'inscription 4 juin 2007 Dernière intervention - 4 avril 2007 à 10:44
0
Merci
Une petite question supplémenataire

quand je cree mon combobox(de la meme maniére que ci dessus)

comment est ce que je lui defini son numero d' index(parcequ elle doit en avoir un dans mon cas)


c.index=2

ne marche pas par exemple
Commenter la réponse de Coconut29200
Coconut29200 15 Messages postés mercredi 4 avril 2007Date d'inscription 4 juin 2007 Dernière intervention - 4 avril 2007 à 11:11
0
Merci
Merci!!

Tant qu'a faire; comment fait on pour ouvrir un fichier word deja
existant(et l'on connait son emplacement sur le disque) et quel
composant faut il charger pour cela sous VB6.0
Commenter la réponse de Coconut29200
cs_MPi 3872 Messages postés mardi 19 mars 2002Date d'inscription 13 juillet 2018 Dernière intervention - 4 avril 2007 à 11:56
0
Merci
Pour des questions multiples, tu es mieux de démarrer un nouveau message. Tu auras plus de chances d'avoir des réponses, surtout que celui-ci a été "marqué" comme accepté...

MPi
Commenter la réponse de cs_MPi
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 avril 2007 à 11:59
0
Merci
Salut,

il y a plus simple mais ça gère si c'est déjà ouvert ou non :

Private Const OF_SHARE_EXCLUSIVE =  &H10
Private Const OF_SHARE_DENY_READ = &H30
Private Const MyDoc      As String = "C:\Chemin\Nouveau.doc"
Private Const MyBook     As String = "C:\Chemin\Nouveau.xls"

Public Enum TypeAppli
    xlApp
    wdApp
End Enum

Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long

Public Sub TestFile(FileToOpen As String, Appli As TypeAppli)
    Dim MonApp      As Object, MonDoc As Object
    Dim NomAppli    As String
    Dim hFile       As Long
    
hFile = -1
If Appli = wdApp Then NomAppli = "Word.Application" Else NomAppli = "Excel.Application"
hFile = lopen(FileToOpen, OF_SHARE_EXCLUSIVE)
If hFile <> -1 Then 'pas ouvert
    lclose (hFile)
    
        Set MonApp = CreateObject(NomAppli)
        MonApp.Visible = True
        If Appli = wdApp Then
            Set MonDoc = MonApp.Documents.Open(MyDoc)
        Else
            Set MonDoc = MonApp.Workbooks.Open(MyBook)
        End If
ElseIf (hFile = -1) And (Err.LastDllError = 32) Then 'déjà ouvert
    lclose (hFile)
    
        Set MonApp = CreateObject(NomAppli)
        MonApp.Visible = True
        If Appli = wdApp Then
            Set MonDoc = MonApp.Documents.Open(MyDoc, , True)
        Else
            Set MonDoc = MonApp.Workbooks.Open(MyBook, , True)
        End If
End If
    
End Sub

Sub EXEMPLE()
    Call TestFile(MyDoc, wdApp)
    Call TestFile(MyBook, xlApp)
End Sub

~ <small> Mortalino ~ Colorisation automatique </small>

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 avril 2007 à 12:02
0
Merci
Arf, j'avais fait une MAJ du snippet :

Private Const OF_SHARE_EXCLUSIVE = &H10
Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
Function OpenDocXlsFile(FileToOpen As String) As Long
'   retourne  :
'   -1  -> erreur
'   0   -> fichier déjà ouvert, ouverture en lecture  seule
'   1   -> ouverture première  instance
    OpenDocXlsFile = -1
    
    Dim sExt        As String
    Dim NomAppli    As String
'   type de fichier  par son extension
    If LenB(FileToOpen) < 16 Then
        Exit Function
    Else
        sExt = LCase$(RightB$(FileToOpen, 8))
        If sExt = ".doc" Or sExt = ".rtf" Then
            NomAppli = "Word"
        ElseIf sExt = ".xls" Or sExt = ".csv" Then
            NomAppli = "Excel"
        Else
            Exit Function
        End If
    End If
'   ouverture  office
    Dim MonApp      As Object
    Dim MonDoc      As Object
    Dim hFile       As Long
    
    hFile = lopen(FileToOpen, OF_SHARE_EXCLUSIVE)
    If hFile <> -1 Then 'pas ouvert
        lclose (hFile)
        Set MonApp = CreateObject(NomAppli & ".Application")
        If NomAppli = "Word" Then
            Set MonDoc = MonApp.Documents.Open(FileToOpen)
        Else
            Set MonDoc = MonApp.Workbooks.Open(FileToOpen)
        End If
        OpenDocXlsFile = 1
    ElseIf (hFile = -1) And (Err.LastDllError = 32) Then 'déjà ouvert
        lclose (hFile)
        Set MonApp = CreateObject(NomAppli & ".Application")
        If NomAppli = "Word" Then
            On Local Error Resume Next
            Set MonDoc = MonApp.Documents.Open(FileToOpen, , True)
            If Err.Number = 4198 Then
'               word 2000, utilisateur fait  ANNULER
                Err.Clear
                GoTo Lbl_Exit
            End If
            On Error GoTo 0
        Else
            Set MonDoc = MonApp.Workbooks.Open(FileToOpen, , True)
        End If
        OpenDocXlsFile = 0
    End If
    MonApp.Visible = True
    
Lbl_Exit:
    Set MonDoc = Nothing
    Set MonApp = Nothing
End Function

'    EXEMPLE
Private Sub Form_Load()
    Debug.Print "Word : " & OpenDocXlsFile("C:\Nouveau  Document Microsoft Word.doc")
    Debug.Print "Excel : " & OpenDocXlsFile("C:\test.xls")
    
    Unload Me
End Sub

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 4 avril 2007 à 12:02
0
Merci
Re,
Je suis de l'avis de .
Néamoins voici comment faire pour ouvrir un document Word Existant.
1- Ajouter la référence Microsoft Word 9.0 Object Library (9.0 ou équivalent) ajout référence Menu Projet => Références.
2- Tester le code ci dessous.

Private Sub Form_Load()
Dim WrdApp As New Word.Application
Dim WrdDoc As Word.Document
   Set WrdDoc = WrdApp.Documents.Open("C\Toto.doc")
   
   '[...]Toutes les opérations sur le document
   
   'Sauvegarde du doc
   Call WrdDoc.Close(True)
   'Fermeture de l'app word
   Call WrdApp.Quit
   
   'Destrcution des objets
   Set WrdDoc = Nothing
   Set WrdApp = Nothing

End Sub , ----
[code.aspx?ID=41455 By Renfield]
NOTE: Lorsque tu cherches du code tout fait va faire une tour sur [www.codyx.org www.codyx.org] pour trouver des bouts de code très utiles.

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.