XL 2016 Type Personalisé VBA

vgendron

XLDnaute Barbatruc
Bonjour à toutes et tous.
depuis 30mn j'ai un souci sur mon code VBA...

j'ai défini un type personalisé
Type tyVoiture
marque as string
modele as string
couleur as string
annee as long
end type


mon code travaillait très bien jusqu'il y a 30mn...

je veux JUSTE ajouter un élément dans mon type Personnalisé.
Type tyVoiture
....
Propriétaire as string
end type

lorque je valide la nouvelle entrée.. tout excel plante......
ce "propriétaire" n'apparait encore nulle part dans mon code..

avez vous déjà expérimenté ce problème de plantage?
le type tyVoiture que je décris ici, n'est qu'un exemple...
en réalité, mon type perso contient bien plus d'éléments===> y a t il un nombre max d'éléments qu'un type perso peut contenir??
 

jmfmarques

XLDnaute Accro
Bonjour
Ce qui est constaté peut arriver dans certains cas, lorsque la modification dans le module VBA a été faite alors que le mode exécution était en cours.
Les choses retrouvent en général leur cours normal en quittant le mode exécution (en passant en mode création) puis en le relançant.
J'évite en général personnellement de déclarer de nouvelles variables ou constantes (ou d'en modifier le type) en dehors du mode création.
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir jmfmarques

Ce qui est constaté peut arriver dans certains cas, lorsque la modification dans le module VBA a été faite alors que le mode exécution était en cours.
pas forcement

si le conteneur de type est global meme si on fait rien et q'uil a été utilisé au moins une fois
c'est en memoire c'est fini toute modif est impossible
les variable type sont déclarées en haut de module et ne peuvent plus être re déterminées une fois quelles le sont (par leur conteneur)et pour peu qu'il soit public :confused:

exemple
option explicit
type voiture
marque
couleur
'..
'...
end type
dim mesvoitures () as voiture'global module une fois enclenché dans une sub l'incrémentant c'est finito même si on fait plus rien
 

vgendron

XLDnaute Barbatruc
hello
merci à tous pour vos réponses et pistes

le nom du type "Propriétaire" ou Proprio n'est pas en cause... j'ai meme essayé avec un "typedemerde"... :-D bon. ok, j'étais enervé :D

les types perso sont effectivement déclarés dans un module Standard sans "private".. donc public...
mais un type perso.. pour qu'il soit utilisable dans les autres modules.. faut bien qu'il soit public??
je sens que je n'ai encore rien compris sur le public, private...

réinitialiser vba , ajouter la propert supp
réinitialiser = arreter Excel et redemarrer je présume...
ajouter la proprieté "supp".. ??

Ce qui est constaté peut arriver dans certains cas, lorsque la modification dans le module VBA a été faite alors que le mode exécution était en cours.
effectivement.. je passe mon temps à modifier le code en cours d'éxecution
meme que lorsqu'il me dit qu'il faut qu'il arrete le débuggeur pour pouvoir effectuer les modifs.. ca me gêne...parce qu'il faut que je me retape toute la séquence de démarrage et de chargement des fichiers..

mais. je vais essayer de passer en mode "création"
d'ailleurs.. quelle différence entre le mode création actif et non actif ?? y a t il une compilation qui se fait ou pas?

pour le fichier. désolé.. c'est une appli complète utilisée au boulot..
et honnetement.. ca ne serait pas vous rendre service que de vous infliger ce code à 50 000 lignes...
ca fait 6 mois que je suis dessus à essayer de comprendre et reprendre ce qu'à fait mon prédécesseur... il a quand même créé une sub min(nb1,nb2) et une sub max(nb1,nb2) qui retournent le min et max entre deux nombres....
 

Dranreb

XLDnaute Barbatruc
Bonjour
il a quand même créé une sub min(nb1,nb2) et une sub max(nb1,nb2) qui retournent le min et max entre deux nombres....
Moi aussi. Je ne comprend pas qu'elles ne fassent pas partie de VBA. On peut certes utiliser les WorksheetFunction.Min et …Max mais je préfèrerais qu'elles soient natives dans vba. J'ai même aussi une fonction Borné qui combine les deux :
VB:
Function Borné(ByVal LimInf As Double, ByVal V As Double, ByVal LimSup As Double) As Double
   Borné = (LimInf + Abs(V - LimInf) - Abs(LimSup - V) + LimSup) / 2
   End Function
 

vgendron

XLDnaute Barbatruc
Re-Bonjour à tous

bon.. le problème était bien plus sioux...
notre bon vieux service informatique a lancé une mise à jour qui a impacté Excel.
et mon appli utilise un plugin (Component One, pour ceux qui connaissent) afin d'acceder à des controles Flex grid...
et c'est CE composant qui foutait le boxon...
sa référence était toujours vue par vba, mais pas vraiment active.. bref...
j'ai désinstallé ce component one, puis réinstallé, puis puis puis..
et la.. ca tombe en marche...
Donc.. je n'ai pas vraiment la VRAIE raison .. mais retour à la normale...

du coup.. Bon week end
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 331
Membres
103 519
dernier inscrit
Thomas_grc11