Macro fonctionne une fois mais pas deux !!!

choupi_nette

XLDnaute Occasionnel
Bonjour le forum,

J'ai une question irrésolue depuis des mois... j'ai essayé pleins de choses sous vos conseils mais ca ne va pas.
La macro ci jointe colle des images et recupere certaines valeurs dans un .csv

J'ouvre mon fichier, je lance la macro (onglet Macro1) ca marche.
Si je relance cette MEME macro j'ai l'erreur jointe ainsi que un bug sur la ligne de code (macro texttocolumn):
Code:
Workbooks.Open Filename:=Répertoire & MyFile
Est ce que ca dit quelquechose à l'un(e) d'entre vous?
Pourquoi cela marche une fois tres bien mais pas 2 ?
Faut il remettre des parametres à 0 ?
Merci pour votre aide mais la je cale
 

Pièces jointes

  • error.jpg
    error.jpg
    18.1 KB · Affichages: 94
  • QC - Copy.xlsm
    30.9 KB · Affichages: 45
  • error.jpg
    error.jpg
    18.1 KB · Affichages: 140
  • error.jpg
    error.jpg
    18.1 KB · Affichages: 128

Softmama

XLDnaute Accro
Re : Macro fonctionne une fois mais pas deux !!!

Bonjour,

Je pense en me penchant vite fait sur ton problème, qu'il provient du fait que lorsque tu lances pour la deuxième fois ta macro, elle essaie d'ouvrir un fichier qui est déjà ouvert, chose que n'apprécie guère Excel. Tu voulais en fait je crois ouvrir chaque fichier .csv de ton répertoire, en lançant plusieurs fois la macro, mais la méthode n'est pas la bonne. Vois la fonction dir pour plus d'informations quant à son utilisation : elle est assez bien expliquée.

Essaie cette modification sinon (à tester):
VB:
Sub texttocolumn()
Répertoire = "C:\Users\choupi\Desktop\Bio\"
MyFile = Dir(Répertoire & "*.csv") 'Pointe sur le 1er fichier concerné
Do While Dir <> "" 'Dir = "" quand on a fini de lister la collection
  Workbooks.Open Filename:=Répertoire & MyFile
  ActiveSheet.Name = "bio"
      Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
    Cells.Select
    Cells.EntireColumn.AutoFit
    Application.Run "Recherche"

'ajouter éventuellement ceci pour pas se retrouver à la fin avec 50 fichiers ouverts:
'Workbooks(Myfile).close false

    MyFile = Dir 'Pour pointer sur le fichier suivant
Loop
End Sub
 
Dernière édition:

choupi_nette

XLDnaute Occasionnel
Re : Macro fonctionne une fois mais pas deux !!!

Bonjour,
Je ne cherche pas a ouvrir deux fois un meme fichier
De plus le fichier csv est detruit a la fin de la procedure (instruction kill)

Chaque fois je ré-alimente mon dossier en nouvaux fichiers (images + csv)
Sous xp et office 2003 ca marchait
mais la...

Sauf erreur de ma part, je pense que ce que tu proposes ne convient pas a mon code
Merci quand meme d'avoir essayé
 

mutzik

XLDnaute Barbatruc
Re : Macro fonctionne une fois mais pas deux !!!

bonjour,

j'ai regardé ton code, et je n'ai rien trouvé qui puisse provoquer l'erreur que tu décris
- s'il était possible que tu joignes un fichier csv
- nous dire dans quelle sub et à quelle ligne tu as l'erreur
 

choupi_nette

XLDnaute Occasionnel
Re : Macro fonctionne une fois mais pas deux !!!

Bonjour,
J'ai decrit dans mon premier message l'erreur, la sub et quelle ligne bloque...
Voici un fichier csv

A chaque fois je ré alimente en images et en csv un dossier et je dois relancer la macro pour coller images + resultats

Config: Windows 7 excel 2010

Merci
 

Pièces jointes

  • ProjectName_Project_code_Results.zip
    2.1 KB · Affichages: 31

mutzik

XLDnaute Barbatruc
Re : Macro fonctionne une fois mais pas deux !!!

re
Sub ListeFichiers_rech()
Dim Chemin As String, Fifi As String
Chemin = "C:\Users\choupi\Desktop\Bio"
Fifi = Dir(Chemin & "*.*")
Do While Fichier <> "" ????? Fichier ou Fifi
ComboBox1.AddItem Fifi
Fifi = Dir
Loop
Application.Run "gogogo"
gogogo 'suffit, pas besoin de application.run
End Sub
 

choupi_nette

XLDnaute Occasionnel
Re : Macro fonctionne une fois mais pas deux !!!

Re,

Code:
Sub ListeFichiers_rech()
Dim Chemin As String, Fifi As String
Chemin = "C:\Users\choupi\Desktop\Bio"
Fifi = Dir(Chemin & "*.*")
Do While Fifi <> ""
    ComboBox1.AddItem Fifi
    Fifi = Dir
Loop
gogogo
End Sub

Maintenant j'ai une erreur 424 > Object required
Pas evident de comprendrece qu il se passe.
A+
 

Staple1600

XLDnaute Barbatruc
Re : Macro fonctionne une fois mais pas deux !!!

Bonsoir à tous

Une suggestion en passant:
Avant chaque utilisation de TextToColumns
Utilises cette macro de John Walkenbach dans ton code

Code:
Sub ClearTextToColumns()
    On Error Resume Next
    If IsEmpty(Range("A1")) Then Range("A1") = "XYZZY"
    Range("A1").TextToColumns Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, _
        Tab:=False, _
        Semicolon:=False, _
        Comma:=False, _
        Space:=False, _
        Other:=False, _
        OtherChar:=""
    If Range("A1") = "XYZZY" Then Range("A1") = ""
    If Err.Number <> 0 Then MsgBox Err.Description
End Sub

Je te laisse faire les tests et nous redire.
 

Staple1600

XLDnaute Barbatruc
Re : Macro fonctionne une fois mais pas deux !!!

Re


En y réfléchissant de plus près, pourquoi ne pas ouvrir ton *csv avec OpenText
Code:
Sub a()
Dim sPath$
sPath = ThisWorkbook.Path & "\"
Workbooks.OpenText sPath & "test.csv"
End Sub

NB: Code testé et fonctionnel avant soumission ici.

PS: Le séparateur de ton csv doit être la virgule pour que le code ci-dessus fonctionne.
 

choupi_nette

XLDnaute Occasionnel
Re : Macro fonctionne une fois mais pas deux !!!

Bonjour,

Tout d'abord merci a tout ceux qui m'aident et à staple1600.
J'ai pu avancer dans le code avec l'opentext c'est pas mal.
Mais?? devinez quoi? ca bloque un peu plus bas.

En fait j'utilise une variable public au debut de la procedure qui permet de faire la distinction entre le fichier excel dans lequel je colle mes images et le fichier csv dans lequel je recupere des infos.

Mais vers la fin cette variable là (Monfic) est rappelée et me provoque une erreur...

D'ou cela sort il ? est ce qu'une variable public se perd d'un module à l'autre ? ca m'etonne sous xp et excel 2003 tout cela marchait bien...

Si quelqu'un a une idée
Merci encore pour tout ce que vous faites
 

Discussions similaires

Statistiques des forums

Discussions
312 553
Messages
2 089 532
Membres
104 205
dernier inscrit
mehaya63