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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA / Excel : Bug étrange ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA / Excel : Bug étrange ...

n°1988158
pepito_mi_​corazon
Posté le 27-04-2010 à 17:56:32  profilanswer
 

Bonjour,
 
Je viens de terminer une Macro sous VBA que j'exécute à partir d'un bouton dans Excel. Ce bouton appelle une fonction qui renvoie un résultat, que j'enregistre dans une cellule Excel.
 
Ma procédure a donc cette structure la :
 
Sub bouton1_Clic()
 
Worksheets("Onglet 1" ).Activate
Range("TX_SECU1_REF" ).Value = SWAP(Range("DTE_ACTU" ), Range("MAT_SECU1" ), Worksheets("SWAP" ).Range("C22" ), Worksheets("SWAP" ).Range("G24:DV24" ), Worksheets("Hyp" ).Range("D173:AH173" ), Worksheets("Hyp" ).Range("D175:AH175" ), Worksheets("SWAP" ).Range("C5" ), Worksheets("SWAP" ).Range("C6" ), Worksheets("SWAP" ).Range("C9" ), Worksheets("SWAP" ).Range("C4" ), Worksheets("SWAP" ).Range("C3" ), 1)
 
End Sub
 
 
Tout s'exécute parfaitement bien si je mets un break point au début de mon programme, et que je l'exécute avec F8 étape par étape.
 
Par contre si je ferme ma fenêtre excel, que je la réouvre, et que je clique sur le bouton, Excel plante avec la proposition d'envoi du rapport d'erreur habituel, et rien à faire...
 
Ce qui est étrange, c'est que si j'ouvre le fichier excel, que j'éxecute tout d'abord le programme grâce au break point (ce qui marche), et que j'enlève le break point, le programme fonctionne alors directement...
 
JE ne sais pas si je suis très clair ....  
 
Avez vous déjà eu ce problème ?
 
MErci !


Message édité par pepito_mi_corazon le 27-04-2010 à 17:58:05
mood
Publicité
Posté le 27-04-2010 à 17:56:32  profilanswer
 

n°1988281
pepito_mi_​corazon
Posté le 28-04-2010 à 10:04:09  profilanswer
 

UP ... Personne ne sait ?

n°1988705
SuppotDeSa​Tante
Aka dje69r
Posté le 29-04-2010 à 14:02:58  profilanswer
 

Hello
 
SWAP() sort d'ou ?
 
Parceque là, tu as une fonction, et une feuille qui ont le meme nom si je lis bien... Ca peut gener Excel quand meme quelque part... :o


Message édité par SuppotDeSaTante le 29-04-2010 à 14:03:45

---------------
Soyez malin, louez entre voisins !
n°1988746
olivthill
Posté le 29-04-2010 à 14:58:47  profilanswer
 

Les swaps de taux ou de devise ? Bon trade ;)  
 
Peut-être qu'à la fin de l'ouverture, un élément est renommé pour empêcher un second lancement.
 
Mais, généralement, quand il y a un plantage, au lieu d'une erreur moins grave, cela vient d'un module complémentaire à Excel (car Excel a tellement d'utilisateurs qu'il est forcément mieux testé que les modules complémentaires dont la diffusion est plus restreinte). Donc, je me demande donc si SWAP ne ferait pas partie d'un COM ou d'un activeX externe qui n'aime pas être lancé deux fois, ou qui ne veut le faire que s'il a bien été fermé la première fois, ce qui ne serait pas le cas ici.

n°1988885
pepito_mi_​corazon
Posté le 29-04-2010 à 22:04:53  profilanswer
 

Grilled pour le swap de taux :P
 
SWAP sort d'une fonction située dans un module complémentaire que j'appelle en choisissant le fichier (VBA=> Références)... Je ré -essaierai en changeant le nom de l'onglet bonne idée merci.
 
Je n'ai pas parfaitement compris ce que tu as voulu dire olivthill ... Mais en fait j'ai "contourné" le problème en copiant collant la fonction, et je ne passe donc plus par de modules complémentaires.... Mais bon c'est pas la panacée.... En tout cas ça prouve que y'a des bug de communication lorsqu'on fait référence à des fonctions de modules externes.... Pas très solide cet outil Excel/Vba !

Message cité 1 fois
Message édité par pepito_mi_corazon le 29-04-2010 à 22:06:31
n°1992518
Xxxaaavvv
Posté le 12-05-2010 à 11:27:15  profilanswer
 

pepito_mi_corazon a écrit :

Mais bon c'est pas la panacée.... En tout cas ça prouve que y'a des bug de communication lorsqu'on fait référence à des fonctions de modules externes.... Pas très solide cet outil Excel/Vba !


 
 
ta ta ta.....
En faisant appel à Worksheets("Onglet 1" ) tu cherche dans le classeur actif, je te laisse déduire le bins quand il y en a plusieurs et que tu ne sais pas trop quel peux être le classeur actif :D
 
De la programation propre en VBA c'est systématiquement repartir du workbook...
Workbooks("mon classeur.cls" ).Worksheets("Onglet 1" )
 
Excel ne peux plus "confondre"
En fait en programation VBA propre, on élimine tout ce qui est (ActiveWorkbook, ActiveWorksheet, Range sans préfixe...)
 
vu que ça commence a faire de grosse ligne de code, c'est plus sympa de travailler avec les "with"
exemple écrire dans le range("A1" ) proprement c'est :
 
Workbooks("mon classeur.cls" ).Worksheets("Onglet 1" ).Range("A1" ).Value = "toto"
 
ou encore
 
With Workbooks("mon classeur.cls" )
    With .Worksheets("Onglet 1" )
        .Range("A1" ).Value = "toto"
    end with
end with


Message édité par Xxxaaavvv le 13-05-2010 à 12:05:23

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

  VBA / Excel : Bug étrange ...

 

Sujets relatifs
Macro Excel : "scan" de colonne et données sur plusieurs fichiersEquivalent du DriveListBox en VBA sur ACCESS
[Résolu] Bug: le texte est gros aléatoirement...Lire et écrire dans un fichier Excel avec un programme c++
Vba supprimer plusieurs lignes if then end ifBug d'affichage en css
[VBS] Actualiser Classeur ExcelRechercher valeur dans excel avec vbs
odtPHP : erreur étrange (fichier odt défectueux)[VBA] Comment envoyer des mail automatiquement?
Plus de sujets relatifs à : VBA / Excel : Bug étrange ...


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