Salut a tous
Je cherche un moyen pour charger automatiquement toutes les feuilles de mon application dès son execution.
Merci d'avance
Salut a tous
Je cherche un moyen pour charger automatiquement toutes les feuilles de mon application dès son execution.
Merci d'avance
Bonsoir,
La collection Forms (voir ce mot dans ton aide en ligne) n'étant composée que des Forms (feuilles) chargées, il te faut nécessairement les désigner dans ton code (tant qu'elles ne sont pas chargées, en effet, tu es seul à en connaître l'existence)... !
PS (Edit) l'instruction Load te permet de charger les feuilles que tu désires charger (et qui font partie de ton projet).
Ceci dit, tu peux charger plusieurs instances d'une Form en déclarant une variable de type frmMaFeuille...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim f As frmMaFenetre Dim i As Integer For i = 1 to 5 Load f f.Caption = "Fenêtre numéro " & i f.Show Next
Voici une autre manière...
Tu crée un module de code. Dans celui-ci tu crée une procédure Sub Main(), dans laquelle tu mets ce code
Bien sur, tu n'oublies pas de mettre dans les propriétés de ton projet, la valeur Sub Main à la propirété... heu... je crois que c'est Objet de démarrage. Chez moi, j'ai VB en anglais et c'est Startup Object.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub Main() Dim fichierFenetre As String Dim chemin As String chemin = App.Path fichierFenetre = Dir(chemin & "\*.frm", vbNormal) Do While fichierFenetre <> "" If Right(fichierFenetre , 4) = ".frm" Then Load fichierFenetre End If fichier = Dir Loop frmPrincipale.Show End Sub
Salut Zazaraignée,
Tu ne fait que confirmer la réflexion de UcFoutu, il faut d'abord savoir combien de feuilles sont disponnibles et tes exemples de codes ne font que confirmer.
A+
EDIT
Dans ton 2em code il faut supposer que les Frm sont dans un répertoir déterminer. (A-tu tester) ca me parais aléatoir pour un EXE où toute les forme y sont incorporées.![]()
Salut a tous et surtout excusez-moi pour cet absence.
Ok, je prends note et je vais essayer vos solutions proposées.
Merci d'avance.
Je voulais charger toutes les feuilles dans un combobox et appliquer des traitements comme: charger une image, ou changer l'apparence, ... en selectionnant la feuille concernée dans le combo.
Je charge les feuilles et j'utilise "Forms" dans une boucle "For Each" pour les ajouter dans le combo.
Je pouvais charger une à une les feuilles mais j'image si mon programme contient 50 feuilles par exemple.
Bonsoir Virtualité
A mon avis, tu confonds des codes pour VBA et des codes pour VB...
Je pense que tu devrais d'abord définir ce que tu souhaites réaliser, puis évaluer la faisabilité de ton projet...
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
N'y a-t-il pas des reférences à activer en VB6 pour pouvoir utiliser des codes pour VBA? Comment faire pour pouvoir utiliser ce code?
Il faut ajouter une référence au programme qui utilise le code VBA. Par exemple pour manipuler les objets d'Excel, ou lancer une macro enregistrée dans un fichier Excel, il faut ajouter une référence à devine quoi ? Excel !
Comme l'a dit Zaza, tu peux activer les références propres à une application Office, telle que Excel, Word, Access, ...
Mais cela ne résoudra pas ton problème de vouloir lister en dynamique les modules de ton projet VB6.
Si tu actives une référence VBA pour Excel, tu auras à ta disposition la collection vbComponents, mais elle ne fonctionnera que pour le projet Excel. Tu ne pourras pas t'en servir pour manipuler des composants VB6.
Le mieux, à ce stade, serait que tu nous explique ce que tu souhaite réaliser, car j'ai peur (pour toi) que tu perdes ton temps en vaines recherches.
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
J'ai essayé les solutions proposées précédamment mais elles ne me donnent pas les resultats souhaités.
Dans mes recherches, j'ai trouvé un code.
Ce code permet d'actualiser la liste des controles d'une feuille dans un combobox
je l'ai pris dans mon MSDN; Je pensais que cela pouvais me servir mais il génère des erreur
dont j'ignore les causes.
NB: VBComponents représente les composants contenus dans un projet.
Aidez-moi a les resoudre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Public Sub RefreshControls() Dim c As VBComponent Dim p As VBProject Dim vbc As VBControl Dim vbf As VBForm Dim sc As String Dim sp As String sp = "ProjEssai" sc = "Form1" cmbControls.Clear Set p = vbi.VBProjects.Item(sp) Set c = p.VBComponents.Item(sc) If c.Type = vbext_ct_VBForm Then c.Activate Set vbf = c.Designer For Each vbc In vbf.VBControls cmbControls.AddItem _ vbc.Properties("name") Next vbc Else cmbControls.Text = "Aucune feuille sélectionnée" End If End Sub
Partager