Erreur de compilation...

Erreur de compilation... - VB/VBA/VBS - Programmation

Marsh Posté le 23-05-2008 à 11:51:16    

Salut à tous !
 
J'ai un soucis avec un message d'erreur.
"Erreur de compilation - Déclaration existante dans la portée en cours".
J'ai juste déplacé un code sans le modifier en le plaçant entre un IF et ELSE et END IF...
 
Quel est mon problème ?

Reply

Marsh Posté le 23-05-2008 à 11:51:16   

Reply

Marsh Posté le 23-05-2008 à 12:10:06    

tu a déclarer une variable en trop
 
genre t'as faite 2 fois :
Dim toto as string

Reply

Marsh Posté le 23-05-2008 à 13:13:51    

Xxxaaavvv a écrit :

tu a déclarer une variable en trop
 
genre t'as faite 2 fois :
Dim toto as string


 
Salut Xxxaaavvv !!!
 
En fait, voici mon code :
 

Code :
  1. ActiveCell.Offset(0, -1).Select
  2.                
  3.             If ActiveCell.Value = "" Then
  4.            
  5.                 Selection.Value = "V"
  6.                
  7.                 RFVALIDE.Show
  8.    
  9.                 Dim OutlApp2 As New Outlook.Application
  10.                     Dim OutlMail2 As MailItem
  11.                     Set OutlApp2 = New Outlook.Application
  12.                     Set OutlMail2 = OutlApp2.CreateItem(olMailItem)
  13.                     With OutlMail2
  14.                    
  15.                         .To = "moi@masociete.com"
  16.                         .Subject = CODESOCIETE & " - Validation du résultat fiscal"
  17.                         .Body = "Le résultat fiscal de la société " & CODESOCIETE & " vient d'être saisi par " & IDENTIFIANT
  18.                         .Send
  19.                    
  20.                     End With
  21.            
  22.             Else
  23.    
  24.                 Dim OutlApp2 As New Outlook.Application
  25.                     Dim OutlMail2 As MailItem
  26.                     Set OutlApp2 = New Outlook.Application
  27.                     Set OutlMail2 = OutlApp2.CreateItem(olMailItem)
  28.                     With OutlMail2
  29.                    
  30.                         .To = "moi@masociete.com"
  31.                         .Subject = CODESOCIETE & " - Modification du résultat fiscal"
  32.                         .Body = "Le résultat fiscal de la société " & CODESOCIETE & " vient d'être saisi par " & IDENTIFIANT
  33.                         .Send
  34.                  
  35.                    End With
  36.            
  37.             End If


 
Alors qu'avant, il n'y avait que :
 

Code :
  1. Dim OutlApp2 As New Outlook.Application
  2.                     Dim OutlMail2 As MailItem
  3.                     Set OutlApp2 = New Outlook.Application
  4.                     Set OutlMail2 = OutlApp2.CreateItem(olMailItem)
  5.                     With OutlMail2
  6.                    
  7.                         .To = "moi@masociete.com"
  8.                         .Subject = CODESOCIETE & " - Saisie du résultat fiscal"
  9.                         .Body = "Le résultat fiscal de la société " & CODESOCIETE & " vient d'être modifié par " & IDENTIFIANT
  10.                         .Send
  11.                  
  12.                    End With


 
J'ai juste créé une condition en fonction de la valeur d'une cellule. S'agit-il d'une première validation ou d'une modification du résultat fiscal ?
 
Mais je n'ai pas rajouté de déclaration de variable...
 
 :??:  


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 23-05-2008 à 13:43:10    

Code :
  1. Dim OutlMail2 As MailItem


est en double.
 
tu met l'un des deux au début de ta procédure
et tu vire l'autre.
 
une déclaration de variable ne se fait qu'une fois
t'a copier un bloc de code, donc la déclaration se trouve en double.

Reply

Marsh Posté le 23-05-2008 à 14:12:18    

Ah OK !
Si je comprends bien, avant toute exécution, un code est lu dans son intégralité...
Car dans le cas de mon code, si la condition est vraie, la partie après THEN est exécutée et non celle après ELSE... et si fausse, l'inverse.
Et je ne pensais pas que tout est lu avant...
 
Merci pour ton aide... ;)


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 23-05-2008 à 14:13:54    

c'est les déclarations qui sont lues avant...
 
et certaine instructions que je ne t'expliquerai pas :p
 
 
en fait VB cherche a comprendre avant l'execution de quels types sont les variables utilisées, si les fonctions que tu utilisent recoivent les bonnes variables, etc...

Message cité 1 fois
Message édité par Xxxaaavvv le 23-05-2008 à 14:14:51
Reply

Marsh Posté le 23-05-2008 à 14:45:39    

Xxxaaavvv a écrit :

c'est les déclarations qui sont lues avant...
 
et certaine instructions que je ne t'expliquerai pas :p
 
 
en fait VB cherche a comprendre avant l'execution de quels types sont les variables utilisées, si les fonctions que tu utilisent recoivent les bonnes variables, etc...


 
;)
 
Merci pour ces éclaircissements !!!
 
;)


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 23-05-2008 à 17:04:17    

Re-salut !
 
Bon, là, j'comprends plus.
Je suis à la maison et j'ai recopié mon fichier Excel.
J'ai une version antérieure d'Excel... version 2000 pour être précis.
Au boulot, c'est une version plus récente... je ne sais pas laquelle mais sans doute la dernière.
Quand j'ouvre mon fichier et que je veux lancer la macro principale, j'ai ce message
"Erreur de compilation - Projet ou biliothèque introuvable"
Le code où ça bloque est le suivant :

Code :
  1. .BIDON.Text = Format(ActiveCell.Value, "##,##0.00" )


Et le mot Format est surligné...
Je suis sûr d'avoir déjà fait fonctionner ma macro avant-hier...
 :fou:


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 23-05-2008 à 17:07:32    

A priori, j'ai une référence manquante...
Effectivement, dans mes macros, il y a un appel à Office Outlook 11.0 Object Library... et quand je vais voir dans la liste, il y a le mot manquant juste avant cette référence...
Qu'est-ce qui bugge ?  :??:
 
Et puis c'est bizarre que le débogueur s'arrête à cette ligne, non ?


Message édité par scaryfan le 23-05-2008 à 17:08:34

---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 23-05-2008 à 17:12:59    

essaye de virer la fonction Format temporairement pour être sur que c'est elle qui bloque.
 
ensuite oui, ton erreur vient d'une dll qui manque par rapporta  ton bureau...
normalement, dans les références tu devrais voir laquelle manque.
(menu projet -> références)

Reply

Marsh Posté le 23-05-2008 à 17:12:59   

Reply

Marsh Posté le 24-05-2008 à 09:18:58    

Xxxaaavvv a écrit :

essaye de virer la fonction Format temporairement pour être sur que c'est elle qui bloque.
 
ensuite oui, ton erreur vient d'une dll qui manque par rapporta  ton bureau...
normalement, dans les références tu devrais voir laquelle manque.
(menu projet -> références)


 
Exact !
Quand je vais voir les références, celle d'Outlook 11 est manquante !
Quand je décoche, la macro s'exécute...par contre, sûrement pas l'envoi de mail.
 
;)


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 24-05-2008 à 09:23:08    

scaryfan a écrit :


 
Exact !
Quand je vais voir les références, celle d'Outlook 11 est manquante !
Quand je décoche, la macro s'exécute...par contre, sûrement pas l'envoi de mail.
 
;)


 
Et chez moi, il suffit d'activer la même référence mais en version 9.00 et ça fonctionne...  :bounce:


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed