Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
901 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problem avec public : ça marche pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problem avec public : ça marche pas

n°919803
FarookFree​man
Posté le 10-12-2004 à 16:28:07  profilanswer
 

Bonjour,
 
Décidément VB, c'est bizarre :
 
Je réalise une macro en VBA pour excel.
 
J'ai mis un tableau en public dans mon module.
 
public tableau(1 to 10) as ComboBox
Dans mes fonctions, je m'en sert assez souvent, jusque là, il n' y avait pas de problème.
 
J'ai décidé de rajouter des boutons dans la même feuille excel à partir de code VBA :
 
Dim buttontoadd As OLEObject
Set buttontoadd = combofeuille.OLEObjects.Add(ClassType:="Forms.CommandButton.1" )

 
Depuis que je fais ça dans une des fonctions. Il me fait la chose suivante :
 
La première utilisation d'un de mes combos fonctionne, mais pas la deuxième ==> il me dit "Object variable or with block not set"
En effet, quand je regarde la valeur des éléments du tableau au moment ou ça plante, il me dit "Nothing".
 
Et pourtant :
- J'ai bien initialisé le tableau puisque je peux y accéder la première fois.
- Je n'ai aucun code qui modifie les éléments de mon tableau excepté dans la sub de base du module.
 
J'y comprends rien. Est-ce que quelqu'un aurait la soluce ?
 
 
 
 

mood
Publicité
Posté le 10-12-2004 à 16:28:07  profilanswer
 

n°919994
Profil sup​primé
Posté le 10-12-2004 à 19:53:40  answer
 

essaye en mettant :
 
Global tableau(1 to 10) as ComboBox
 
 

n°920146
FarookFree​man
Posté le 10-12-2004 à 23:57:41  profilanswer
 

Déjà fait ça marche pas.  
Le problème a l'air plus grave : C'est un ajout de code(qui n' a priori rien à voir) qui fait que ça marche plus :  
 
ActiveSheet.OLEObjects.Add ClassType:="Forms.CommandButton.1" )  

n°921015
FarookFree​man
Posté le 12-12-2004 à 14:55:22  profilanswer
 

Voilà mon début de code de macro :
 
Option Explicit
 
Public Flag As Boolean  
 
Public Nom_feuilles(3)  
Public nom_colonnes(10) As String  
Public combos(0 To 10) As ComboBox
Public combostring(0 To 10) As String  
Public colonne_supp As Integer  
Public colonne_mod As Integer  
Public bddboutons As New Collection  
Public comboboutons As New Collection  
 
' sub d'entrée de la macro  
Sub MacroOne()
 
Set combos(0) = Sheet1.ComboBox1
Set combos(1) = Sheet1.ComboBox2
Set combos(2) = Sheet1.ComboBox3
Set combos(3) = Sheet1.ComboBox4
Set combos(4) = Sheet1.ComboBox5
 
....
 
End Sub
 
Sub ReloadCombo(numCombo as Integer)
 ...
End Sub
 
Sub Selectionner(numCombo as Integer, value as String)
 ...
End Sub
 

 

n°921040
Profil sup​primé
Posté le 12-12-2004 à 16:00:54  answer
 

et si tu mettait plutot ta declaration de tableau dans la feuille concernée plutot que dans un module ?

n°921079
FarookFree​man
Posté le 12-12-2004 à 17:38:59  profilanswer
 

Je vais essayer ta solution

n°921086
FarookFree​man
Posté le 12-12-2004 à 17:50:16  profilanswer
 

J'ai mis toutes les variables et sub dans la feuille en question. Ca ne marche pas plus. Même probleme : les tableaux se vide après l'ajout dynamique du 1er bouton

n°921094
Profil sup​primé
Posté le 12-12-2004 à 18:26:16  answer
 

ca c'est tres curieux , si je fait ce code :
 

Code :
  1. Set combos(0) = Feuil1.ComboBox1
  2. Set combos(1) = Feuil1.ComboBox2
  3. Set combos(2) = Feuil1.ComboBox3
  4. Set combos(3) = Feuil1.ComboBox4
  5. Set combos(4) = Feuil1.ComboBox5
  6. ActiveSheet.OLEObjects.Add ClassType:="Forms.CommandButton.1"
  7. MsgBox combos(0).Name


 
 
il me renvoie bien "ComboBox1"
 
 :??:  

n°921096
Profil sup​primé
Posté le 12-12-2004 à 18:28:20  answer
 

PS : en passant les declarations "Public" dans une feuille tu doit les passer en "Private"

n°921097
Profil sup​primé
Posté le 12-12-2004 à 18:29:03  answer
 

Code :
  1. Private Flag As Boolean
  2. Private Nom_feuilles(3)
  3. Private nom_colonnes(10) As String
  4. Private combos(0 To 10) As ComboBox
  5. Private combostring(0 To 10) As String
  6. Private colonne_supp As Integer
  7. Private colonne_mod As Integer
  8. Private bddboutons As New Collection
  9. Private comboboutons As New Collection
  10. Sub test()
  11. Set combos(0) = Feuil1.ComboBox1
  12. Set combos(1) = Feuil1.ComboBox2
  13. Set combos(2) = Feuil1.ComboBox3
  14. Set combos(3) = Feuil1.ComboBox4
  15. Set combos(4) = Feuil1.ComboBox5
  16. ActiveSheet.OLEObjects.Add ClassType:="Forms.CommandButton.1"
  17. MsgBox combos(0).Name
  18. End Sub

mood
Publicité
Posté le 12-12-2004 à 18:29:03  profilanswer
 

n°921283
FarookFree​man
Posté le 12-12-2004 à 21:21:52  profilanswer
 

gargamail a écrit :

PS : en passant les declarations "Public" dans une feuille tu doit les passer en "Private"


 
Je l'ai déjà fait ( J'ai pas mis le mot clé Private mais il est utilisé implicitement).  
Mais ça ne marche pas.
 
Le problème est plus compliqué que ça : C'est depuis que j'ai ajouté le code suivant (qui n' a priori rien à voir) que ça marche plus :  
 
ActiveSheet.OLEObjects.Add ClassType:="Forms.CommandButton.1" )  
 
Si je l'enlève tout remarche ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problem avec public : ça marche pas

 

Sujets relatifs
[SGBD] Stats Oracle : Comment ça marche ? Que faire ?Comment marche le C
Url rewriting ne marche pas chez moiOuvrir un lien dans une fenetre séparé ? marche pas sous IE
JScrollPane(JPanel) = marche pô!background: blablabla fixed... IE ça marche pas ?
Code tout bête qui marche pas sous FireFox (??)foreach qui marche pas
[CSS] margin-bottom ... ca marche pas ?Problem de loop ds un jeu [svp regarder]
Plus de sujets relatifs à : problem avec public : ça marche pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR