qu'est ce qui cloche avec ma macro

qu'est ce qui cloche avec ma macro - VB/VBA/VBS - Programmation

Marsh Posté le 06-07-2004 à 14:05:11    

hello
 
 
la voici:
 

Sub Macro2()
Dim mail, request, CurrRow, LastRow
Close #1
campagneID = InputBox("Campagne ID" )
Open "request" & campagneID & ".TXT" For Output As #1
LastRow = Application.CountA(ActiveSheet.Range("A:A" ))
For Each Cell In Range("A1:A" & LastRow)
    mail = Cell.Value
Print #1, mail  
Next Cell
Close #1
MsgBox "Done"
End Sub


 
le fichier n'est pas crée ca c'est le probleme de base.
 
le 2em c'est pourquoi ce fichu excel (version 2002 ) a effacé mes macros lorsque je l'ai fermé sachant que je sauvegardait a chaque modification :'(
 
y'a un espoir de les retrouver ?
 
merci :(

Reply

Marsh Posté le 06-07-2004 à 14:05:11   

Reply

Marsh Posté le 06-07-2004 à 14:20:19    

Question de base...As-tu les droits en ecriture (ça expliquerait le fichier pas créé et les macros pas sauvegardées)
 
Sinon:
1: Essaie qq chose comme ça. Après, on verra pour l'ouverture du fichier. (je ne suis pas sûr que le pb. initial soit là)

Code :
  1. Sub Macro2()
  2. Dim objSheet As Worksheet
  3. Dim objCell As Range
  4. Dim i As Integer
  5.     Reset
  6.     ' campagneID = InputBox("Campagne ID" )
  7.    
  8.     Open "c:\mes documents\request1.TXT" For Output As #1
  9.     Set objSheet = ThisWorkbook.Worksheets("Feuil1" )
  10.     i = 1
  11.     Do While objSheet.Range("A" & i).Value <> ""
  12.         Print #1, objSheet.Range("A" & i).Value
  13.         i = i + 1
  14.     Loop
  15.     Close #1
  16.     MsgBox "Done"
  17. End Sub


 

Reply

Marsh Posté le 06-07-2004 à 14:30:24    

Une application hôte peut désactiver ou activer des macros. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :  
 
· Vous avez ouvert le document avec l'option Macros Désactivées.
 
Fermez le document, puis ouvrez-le de nouveau en activant l'option Activer les Macros.
 

Reply

Marsh Posté le 06-07-2004 à 14:36:47    

JiHemAir a écrit :

Une application hôte peut désactiver ou activer des macros. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :  
 
· Vous avez ouvert le document avec l'option Macros Désactivées.
 
Fermez le document, puis ouvrez-le de nouveau en activant l'option Activer les Macros.


 
tout d'abord merci beaucoup pour ton aide :jap:
 
je vais tout refaire par rapport a ton exemple qui marche niquel.
 
sinon , c'est possible de crée le fichier dans le repertoir courrant plutot que dans c:\ ?
 
et aussi, y a moyen de faire l'affectation en meme temps que la comparaison:
 Do While objSheet.Range("B" & i).Value <> "" ( pour optimiser le truc :D  ?)  
 
ps: le prob des sauvegarde est résolu, j'executait les macros a partir d'un fichier csv :/


Message édité par veryfree le 06-07-2004 à 14:39:05
Reply

Marsh Posté le 06-07-2004 à 14:46:02    

Citation :

sinon , c'est possible de crée le fichier dans le repertoir courrant plutot que dans c:\ ?

Open CurDir & "\request1.TXT" For Output As #1 pour travailler dans le rep. courant.  :wahoo:  
 
 

Citation :

et aussi, y a moyen de faire l'affectation en meme temps que la comparaison:
 Do While objSheet.Range("B" & i).Value <> "" ( pour optimiser le truc :D  ?)

Nan  :cry:  Il faut tester d'abord et affecter après.
 

Reply

Marsh Posté le 06-07-2004 à 15:04:02    

a ma grande surprise tout les fichers etait crée dans mes docs .
 
CurDir retourne  
 

Citation :

C:\Documents and Settings\jerry\Mes documents


 
alors que le fichier xls se trouve a :
 

Citation :

C:\Documents and Settings\jerry\Bureau\macros


 
enfin c'est pas tres grave.Merci encore
 
 :hello:


Message édité par veryfree le 06-07-2004 à 15:04:39
Reply

Marsh Posté le 06-07-2004 à 15:47:05    

derniere chose, comment tu fait pour les distribuer tes macros?
 
on recevra un fichier excel tout les mois et il faudrai executer clele que j'ai ecrit sur ce fichier, c'est quoi le moyen le plus simple pour ne pas avoir a faire 50 manipulations?
surtout que ce sera pas a moi de les faire...
 
Merci  

Reply

Marsh Posté le 06-07-2004 à 16:01:39    

Le mieux, c'est d'ecrire cette macro dans un fichier qui ne contient qu'elle, avec une seule feuille et un bouton dessus pour la lancer.
Quand tu reçois le fichier mensuel, tu l'ouvres en même temps que celui qui contient le bouton. Avec une petite gymnastique dans la macro pour savoir le nom du workbook qui n'est pas celui de la macro, tu dois pouvoir t'en tirer.

Reply

Marsh Posté le 06-07-2004 à 16:04:49    

Le premier Close #1
 
C'est pas plutôt un Free #1 que tu veux faire :??:

Reply

Marsh Posté le 06-07-2004 à 16:16:11    

JiHemAir a écrit :

Le mieux, c'est d'ecrire cette macro dans un fichier qui ne contient qu'elle, avec une seule feuille et un bouton dessus pour la lancer.
Quand tu reçois le fichier mensuel, tu l'ouvres en même temps que celui qui contient le bouton. Avec une petite gymnastique dans la macro pour savoir le nom du workbook qui n'est pas celui de la macro, tu dois pouvoir t'en tirer.


 
quand tu parle de feuille, c'est la feuille de calcul ou un form VB ?
 
je pense que tu parle de la feuille de calcul mais comment tu met ce bouton ?
 
sinon a chaque ouverture de fichier ca crée une nouvelle instance d'excel donc je sais pas si ca marchera mais je testerai qd ce sera ok :)

Reply

Marsh Posté le 06-07-2004 à 16:16:11   

Reply

Marsh Posté le 06-07-2004 à 16:29:47    


Code :
  1. je pense que tu parle de la feuille de calcul mais comment tu met ce bouton ?

Oui, c'est sur la feuille de calcul que je met le bouton.

Citation :

sinon a chaque ouverture de fichier ca crée une nouvelle instance d'excel donc je sais pas si ca marchera mais je testerai qd ce sera ok

Non. Tu n'as qu'une instance d'Excel, mais plusieurs WorkBooks. La preuve, ouvre plusieurs fichiers Excel et dans le module ThisWorkbook de l'un d'eux, colle ce code:

Code :
  1. Sub toto()
  2. Dim objWb As Workbook
  3.     For Each objWb In Application.Workbooks
  4.         Debug.Print objWb.Name
  5.     Next
  6. End Sub

Tu verras qu'il liste tous les fichiers(classeurs) ouverts. A l'aide des objet Workbook, tu peux acceder a chacun (ainsi qu'à leur contenu) individuellement.

Reply

Sujets relatifs:

Leave a Replay

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