Classes/Objets/Sub dur dur...

LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006 - 2 juin 2006 à 11:35
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006 - 2 juin 2006 à 15:09
Bonjour,

Après mes débuts en VBA excel, je m'en sors presque pas mal, mais là, j'ai un problème...

Je vais prendre un exemple simple plutôt que mon problème actuel... C'est déjà assez compliqué à expliquer comme ça). J'ai en gros un programme sous la forme :

Module de classe CVoiture

public vitesse as integer
public reservoir as integer
public Moteur as CMoteur

Module de classe moteur

public NbreSoupapes as integer
public NbreDeToursMaximum as long

Module Fonctions

public sub RemplirTableauCaractéristiques (Voiture as object 'ou CVoiture, ça ne marche pas non plus')
Là je remplis ma page excel avec un :
   with workbooks(...).worksheets(...)
      .cells(...) = Voiture.vitesse
      .cells(...) = Voiture.Moteur.NbreSoupapes
      ...
   end with
end sub

Et je fais appel à cette fonction dans une userform avec un petit bouton de cette manière :

RemplirTableauCaractéristiques(voiture1) 'Voiture1 étant une variable globale.

BILAN : ERREUR 438... Propriété ou méthode non gérée par l'objet...

D'où cela vient-il? Je me doute qu'il y a un truc que j'ai mal fait, mais comme je débute...

Merci d'avance.

LF pour les nuls,
Bidouilleur fou.

17 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 12:03
Bonjour

Sur quelle ligne ?

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006
2 juin 2006 à 12:05
Sur le lancement de la sub :

RemplirTableauCaractéristiques(voiture1)

LF pour les nuls,
Bidouilleur fou.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 12:16
Bonjour

Tu as essayer :
Fonctions.RemplirTableauCaractéristiques(voiture1)
?

mettre le nom du module à utiliser quoi.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006
2 juin 2006 à 12:22
ça ne marche pas non plus.

En fait, j'ai toujours le même problème : c'est pareil avec les textbox. Impossible de les entrer en paramètre. Dès que j'essaie de mettre un objet en paramètre, ça bugge.

Merci pour ton aide.

LF pour les nuls,
Bidouilleur fou.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 12:28
Bonjour

Tu as testé ton exemple ?
Si il ne marche pas, il y a un gros pb quelque part.
Si il marche et pas ton programme, il faudra que tu le décrive un peu plus.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 12:29
Bonjour

J'oubliais, évite les accents dans les nom de méthodes/variable/classe. (c'est peut-être la cause de l'erreur).

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006
2 juin 2006 à 13:32
ça ne vient pas des accents car je n'en mets pas dans mes programmes (juste sur l'exemple là sans faire expres).

J'ai bien testé mon exemple et ça me fait exactement le même problème. En fait, j'ai des soupçons sur la cause. Voilà ma commande bouton :

Private Sub CommandButton1_Click()
    Dim voiture As New Cvoiture
    Dim moteur As New CMoteur
    With moteur
        .NbreDeTours = 500
        .NbreSoupapes = 16
    End With
    With voiture
        .vitesse = 10
        .reservoir = 50
        Set .moteur = moteur
    End With
    RemplirTableauCaracteristiques (voiture) 'Même erreur ici
End Sub

Je pense que la ligne en rouge doit poser problème non?
Lorsqu'on a un objet en paramètre d'un autre objet, comment on s'y prend pour l'affectation?

LF pour les nuls,
Bidouilleur fou.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 13:44
Bonjour

La ligne en rouge est syntaxiquement correct, et ne pose pas de problème.
C'est bizzare, quand tu fait "Deboguer", il te met la ligne violette en surligner ?
Essaye en mettant Byref ou Byval devant le paramètre de ta sub.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006
2 juin 2006 à 13:51
Oui il me surligne la ligne violette lors du déboguage après erreur (avant le lancement de l'application, le déboguage passe tranquille).

byval ou byref, même erreur.

Je copie la fonction, mais je comprendrais si mon cas est désespéré^^

Public Sub RemplirTableauCaracteristiques(ByRef voiture As Cvoiture)
    Cells(1, 1) = voiture.moteur.NbreDeToursMaximum
    Cells(2, 1) = voiture.reservoir
    Cells(3, 1) = voiture.vitesse
    Cells(4, 1) = voiture.moteur.NbreSoupapes
End Sub

Les classes sont tout au début et le bouton juste au-dessus.

LF pour les nuls,
Bidouilleur fou.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 14:07
Bonjour

Je te contact en pv pour que tu me passe le fichier par mail, pour tester.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006
2 juin 2006 à 14:18
Ok merci.

LF pour les nuls,
Bidouilleur fou.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 14:29
Bonjour

Tu m'as envoyer un vichier vide (ou il y a un pb de version).

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006
2 juin 2006 à 14:35
Je confirme qu'il n'est pas vide. La feuille oui, mais quand j'ouvre l'éditeur VB, j'ai bien le code...

LF pour les nuls,
Bidouilleur fou.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 14:41
Bonjour

Le fichier reçu fait 34.5ko et je n'ai aucun module ni userform (juste 3 feuilles vides, workbook les tout vide dans VBA editor).
Tu peux le réenvoyer ?

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006
2 juin 2006 à 14:54
Fait :)

LF pour les nuls,
Bidouilleur fou.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 juin 2006 à 14:56
Bonjour

Je ne parvient pas à télécharger le fichier à partir du webmail laposte, désolé.
Tu doit surement appelé la procédure mais de manière incorrecte. j'arrive à la limite de ce que je peux faire (les données fournies durant les échanges n'ont pas été suffisant, et je ne peux pas recevoir le fichier envoyer).
Désolé.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
LF pour les nuls Messages postés 19 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 2 juin 2006
2 juin 2006 à 15:09
Tant pis... Je vais bidouiller autrement. Mais ça m'énervait de pas pouvoir utiliser d'objets dans mes procédures. Mais si tu n'arrives pas à recevoir mes fichiers, je dois avoir un problème quelque part... Surtout que le code est simple puisque j'ai déjà tout posté là...

Merci encore!!!

Bonne journée!

LF pour les nuls,
Bidouilleur fou.
0
Rejoignez-nous