Coconut29200
Messages postés15Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention 4 juin 2007
-
4 avril 2007 à 09:57
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 4 avril 2007 à 10:07
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 4 avril 2007 à 10:52
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
Coconut29200
Messages postés15Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention 4 juin 2007 4 avril 2007 à 11:11
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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 4 avril 2007 à 11:56
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é...
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
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 4 avril 2007 à 12:02
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>
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 4 avril 2007 à 12:02
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.