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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[VBA] problème dans une boucle

n°1914040
Deamon
Posté le 11-08-2009 à 15:47:57  profilanswer
 

Reprise du message précédent :
Si tu nous disais la ligne où il plante déjà...

mood
Publicité
Posté le 11-08-2009 à 15:47:57  profilanswer
 

n°1914064
_xme_
Posté le 11-08-2009 à 16:09:47  profilanswer
 

Si j'ai compris ca remarque il nous dit que  

Code :
  1. FileCopy SourceFichier, NomFichier


ne marche pas...
Ca fait à peu près 2 jours que je lui demande s'il a testé avant de faire ça  :ange:  
Donc si j'ai bien compris et ben t'es parti pour une vrai copie :)
tu ouvres ton fichier texte tu lis le contenu et tu l'écris dans l'excel
bonne chance

n°1914067
foxley_gra​vity
Posté le 11-08-2009 à 16:12:03  profilanswer
 

ligne 58  alors que tout marchait bien avant ...les calls

n°1914073
foxley_gra​vity
Posté le 11-08-2009 à 16:21:34  profilanswer
 

xme je voulais te dire que le programme fonctionné nickel pour 1 ex ....... et je voulais qui marche pour plusieurs ( avec les calls )  donc si il marchait... logiquement FileCopy SourceFichier, NomFichier marchait à la perfectionnement ( j'en suis sur même ) .... !!!

n°1914093
_xme_
Posté le 11-08-2009 à 16:46:49  profilanswer
 

foxley_gravity a écrit :

xme je voulais te dire que le programme fonctionné nickel pour 1 ex ....... et je voulais qui marche pour plusieurs ( avec les calls )  donc si il marchait... logiquement FileCopy SourceFichier, NomFichier marchait à la perfectionnement ( j'en suis sur même ) .... !!!


Tiens c'est pas bête ça  :whistle:  
donc ligne 58

Code :
  1. Columns("A:A" ).Select


erreur 1004, c'est quoi le message associé?
car bon j'ai un doute que ça ça puisse planté...
Est ce que tu nous donnes correspond à ce que tu fait tourner?
Car tu sais il existe un débuggeur sous excel qui permet de voir sur quel ligne ca plante ;)


Message édité par _xme_ le 11-08-2009 à 16:51:49
n°1914097
foxley_gra​vity
Posté le 11-08-2009 à 16:52:36  profilanswer
 

erreur définie par l'application ou par l'objet

n°1914100
_xme_
Posté le 11-08-2009 à 16:53:43  profilanswer
 

foxley_gravity a écrit :

erreur définie par l'application ou par l'objet


whaou on ne peut moins claire  :heink:  
bon peux-tu avec le dbuggeur excel vérifié sur quel ligne ca plante merci ;)


Message édité par _xme_ le 11-08-2009 à 16:53:56
n°1914104
foxley_gra​vity
Posté le 11-08-2009 à 16:55:15  profilanswer
 

ligne 58  deja dit

n°1914106
foxley_gra​vity
Posté le 11-08-2009 à 16:57:30  profilanswer
 

ou c'est  , avec f8 , c'est au moment du passage vers With Selection.Font que ca plante

n°1914121
Deamon
Posté le 11-08-2009 à 17:20:35  profilanswer
 

J'ai l'impression que ton With ActiveSheet ne sert à rien ou du moins qu'il n'est pas utilisé. Essaye de mettre un . devant Columns ligne 58 mais ça m'étonnerait que ce soit ça.

mood
Publicité
Posté le 11-08-2009 à 17:20:35  profilanswer
 

n°1914125
_xme_
Posté le 11-08-2009 à 17:24:28  profilanswer
 

Bon vraiment bizarre, je vois aucun bug apparent
à part ça, qui me dérange  

Code :
  1. Workbooks.Open Filename:=NomFichier
  2. Workbooks(i & ".xls" ).Worksheets(1).Activate


mais vu que tu disais que ca marchait pour un...
c'est du VBA donc je m'y connais pas trop mais en VBS
on aurait plutôt fait:

Code :
  1. Set objExcel = CreateObject("Excel.Application" )
  2. objExcel.Workbooks.Open(NomFichier)
  3. Set feuille = objExcel.Workbooks(1).Worksheets(1)


donc en VBA je veux bien que la déclaration de l'objet excel soit inutil mais c'est le coup du Workbook (i & ".xls" ) qui me dérange ..
 
Après en regardant comme ça je vois rien de plus qui me choque
Si tu n'as pas d'autre élément, (genre en fait le code à changé)
Esssaye d'afficher le contenu de tes variables et essaye de voir si tu arrives bien à te connecter au fichier.
Si malgrès tout tu ne trouves pas, faudra passer tes sources car là je vois pas....


Message édité par _xme_ le 11-08-2009 à 17:25:33
n°1914131
foxley_gra​vity
Posté le 11-08-2009 à 17:32:05  profilanswer
 

pourquoi le Workbook (i & ".xls" )  te choque ?

n°1914199
seniorpapo​u
Posté le 12-08-2009 à 08:05:19  profilanswer
 

Bonjour,
ne manquerait-il pas un .  devant le columns   , ligne 58 ??
Cordialement

n°1914223
foxley_gra​vity
Posté le 12-08-2009 à 09:22:04  profilanswer
 

Bonjour tout dabord merci de votre aide  
 
Non il ne manque pas de . devant le columns sinon error ...  
Je viens d'effectuer la macro en dure , avec i des valeur fixe du style ""P37796"" , en enlevant les call et ..ca marche ... le probleme viendrait des call ...

n°1914224
foxley_gra​vity
Posté le 12-08-2009 à 09:24:42  profilanswer
 

J'ai aussi changer le function en sub ...  à mon avis le probleme vient de la ...

n°1914227
Deamon
Posté le 12-08-2009 à 09:29:14  profilanswer
 

foxley_gravity a écrit :

à mon avis le probleme vient de la ...


T'as testé ça marche ? Ou bien tu supposes (et auquel cas tu ferais mieux d'essayer au lieu de poster) ?

n°1914230
foxley_gra​vity
Posté le 12-08-2009 à 09:30:39  profilanswer
 

ben oui j'ai testé

n°1914232
foxley_gra​vity
Posté le 12-08-2009 à 09:31:59  profilanswer
 

quand je remet comme avant avec pas de call , des sub , des noms en dur .. ca marche , sinon ca bloque pour des raison différence à différence étape ... il faudrait remplacer les call par un autre truc en gardant les sub ...

n°1914233
Deamon
Posté le 12-08-2009 à 09:32:46  profilanswer
 

A mon avis ça vient pas directement des CALL.
 
Ca plante au 2eme CALL ou dès le premier ?

n°1914236
_xme_
Posté le 12-08-2009 à 09:41:36  profilanswer
 

Je ne sais pas comment ca marche en VBA, mais ne faut-il pas déclarer la fonction avant de l'appeler avec un call?
-> donc teste de mettre les call après la déclaration pour voir

Message cité 1 fois
Message édité par _xme_ le 12-08-2009 à 09:41:55
n°1914237
foxley_gra​vity
Posté le 12-08-2009 à 09:41:54  profilanswer
 

au premier ... au niveau de la conversion du document .. mais le début se passe bien ( alors que la conversion marche bien en dur ..)

n°1914238
foxley_gra​vity
Posté le 12-08-2009 à 09:45:10  profilanswer
 

merci xme .. mais même si le place apres , je suis obliger de lancer le call  en premier, j'arrive pas à lancer function...( car on ne pas lancer directement des functions apparement )

n°1914239
Deamon
Posté le 12-08-2009 à 09:49:23  profilanswer
 

_xme_ a écrit :

Je ne sais pas comment ca marche en VBA, mais ne faut-il pas déclarer la fonction avant de l'appeler avec un call?
-> donc teste de mettre les call après la déclaration pour voir


Non pas besoin. Même depuis un module différent tu n'as rien besoin de déclarer en VBA.
 

foxley_gravity a écrit :

j'arrive pas à lancer function...( car on ne pas lancer directement des functions apparement )


 [:gratgrat]  
Pour lancer une fonction c'est justement avec CALL.

n°1914241
seniorpapo​u
Posté le 12-08-2009 à 09:49:35  profilanswer
 

RE,
SI ton code correspond à ce que tu as mis dans ton post: je ne vois pas de point devant columns ligne 58!!!! sur tes post's 1913561 et 1913889 peux-tu remettre ton code actuel??  
j'ai testé ta séquence en entier avec tes trois appels: Il manque une fermeture sytématique de tes .xls, tu plantes sur le saveas ...parce que tu veux recouvrir un classeur qui est ouvert. Un save pourrait passer.
 
Cordialement


Message édité par seniorpapou le 12-08-2009 à 09:53:12
n°1914245
foxley_gra​vity
Posté le 12-08-2009 à 09:53:12  profilanswer
 

Merci papou :) mais le code dixit marche bien en dur ... sans les call avec des sub .... il y aurait pas un autre moyen pour palier au call en gardant des sub ...
 
voici le code  
 

Code :
  1. Sub toto()
  2.  
  3. Call lolo("P37786" )
  4. Call lolo("P37792" )
  5. Call lolo("P37796" )
  6.  
  7. End Sub
  8.  
  9. Function lolo(i As String)
  10.  
  11. 'L'utilisateur vient sélectionner le répertoire
  12.  
  13. Dim xlApp As New Excel.Application
  14. Dim xlBook As Workbook
  15. Dim NomFichier As String
  16.  
  17. Dim Repertoire As FileDialog
  18. Dim nom As String
  19. Dim SourceFichier
  20.  
  21. h = "D:\Documents and Settings\x7001\Bureau\Laurent inventaires prévoyance"
  22.  
  23.  
  24. 'Ouverture des fichiers TXT envoyés par le SI (le nom reste invariable)
  25.  
  26. nom = h & "\"
  27.  
  28.  
  29. 'création fichier cible (vide) dans le fichier que l'utilisateur à créer pour mettre les fichiers du SI txt
  30.  
  31. Set xlApp = CreateObject("Excel.Application" )
  32. Set xlBook = xlApp.Workbooks.Add
  33.  
  34.  
  35. NomFichier = nom & i & ".xls"
  36. xlBook.SaveAs NomFichier
  37. xlBook.Close
  38. xlApp.Quit
  39.  
  40. Set xlBook = Nothing
  41. Set xlApp = Nothing
  42.  
  43. SourceFichier = nom & i & ".txt"
  44. FileCopy SourceFichier, NomFichier
  45.  
  46.  
  47. Workbooks.Open Filename:=NomFichier
  48.  
  49. Workbooks(i & ".xls" ).Worksheets(1).Activate
  50.  
  51. With ActiveSheet
  52.  
  53.  
  54.    Columns("A:A" ).Select
  55.    With Selection.Font
  56.        .Name = "Courier New"
  57.        .FontStyle = "Normal"
  58.        .Size = 10
  59.        .Strikethrough = False
  60.        .Superscript = False
  61.        .Subscript = False
  62.        .OutlineFont = False
  63.        .Shadow = False
  64.        .Underline = xlUnderlineStyleNone
  65.        .ColorIndex = xlAutomatic
  66.    End With
  67.    Selection.TextToColumns Destination:=Range("A1" ), DataType:=xlDelimited, _
  68.        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
  69.        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
  70.        :="|", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
  71.    ChDir "D:\Documents and Settings\x7001\Bureau"
  72.    
  73.    
  74.    'On enregistre le nouveau document au format xls créer
  75.    
  76.    ActiveWorkbook.SaveAs Filename:= _
  77.        NomFichier, FileFormat:=xlNormal _
  78.        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
  79.        CreateBackup:=False
  80.  
  81. End With
  82.  
  83.  
  84. End Function

n°1914246
Deamon
Posté le 12-08-2009 à 09:55:20  profilanswer
 

Comme a dit seniorpapou il faut que tu fermes à la fin les classeurs que tu ouvres. Ce n'est pas un problème de CALL mais juste que ta fonction est appelée plusieurs fois de suite.

 

Et remplace function par sub c'est plus propre.


Message édité par Deamon le 12-08-2009 à 09:56:04
n°1914250
foxley_gra​vity
Posté le 12-08-2009 à 10:07:02  profilanswer
 

je les ferme quel workbooks  à quelles lignes ..?

n°1914251
Deamon
Posté le 12-08-2009 à 10:07:39  profilanswer
 

Celui que t'as ouvert quand t'as fini de l'utiliser. :o

n°1914253
foxley_gra​vity
Posté le 12-08-2009 à 10:09:47  profilanswer
 

ligne 39 mais ca plante encore + tot ...
 
' fermeture fichier
Workbooks(nom & i & ".xls" ).Close savechanges:=False

n°1914254
Deamon
Posté le 12-08-2009 à 10:12:11  profilanswer
 

Le fermer avant de l'ouvrir c'est fort. [:implosion du tibia]

n°1914255
foxley_gra​vity
Posté le 12-08-2009 à 10:14:36  profilanswer
 

loool je croyais quel était ouverte :) j'aime bien la photo avec laporte , jeu de mot avec le nom et tout bravo :)  
 
ben je les mis en derniere ligne alors mais .. l'erreur persiste

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
problème de loginmode avec sqlserver 2005probleme session php - header tout ca.
problème de durée avec mktime()[VBA]ouvrir un page internet et inscrire un code pour ouvrir undossier
PROBLEME d'if comportant un lienVBA Graphiques
Problème tableauProduct could not be found: Probleme de Manifest.mf?
[VBA] ouvrir un fichier dont le repertoire est choisi par lutilisateurProblème boucle de recherche sous VBA sur Excel
Plus de sujets relatifs à : [VBA] problème dans une boucle


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