Voil=E0,
J'ai cr=E9=E9 une macro dans un classeur excel et elle marche lorsque je
copie les donn=E9es =E0 traiter dedans. Mais j'aimerai que ce classeur ne
me serve qu'=E0 porter la macro et qu'il n'y ait pas besoin de copier
les informations.
J'ai donc ajouter un lancement automatique qui me demande d'ouvrir le
fichier =E0 traiter dans ma macro de d=E9part. Et =E7a marche. (D'ailleurs
merci parce que j'ai trouv=E9 la solution sur le forum).
Mais apr=E8s, je n'arrive pas =E0 activer le nouveau classeur (un fichier
texte au format tableau) et r=E9sultat ma macro s'=E9x=E9cute dans le vide
sur le document du d=E9part.
j'ai fait =E7a:
Msg =3D "S=E9lectionner le fichier texte =E0 traiter"
Style =3D vbOK
Title =3D "Choix du fichier Texte"
Response =3D MsgBox(Msg, Style, Title)
'R=E9cup=E8re le chemin vers le fichier texte qui va bien
chemin =3D Application.GetOpenFilename(",*.txt,,")
Remarque j'ai d=E9clar=E9 une varible exceltxt as workbook
apr=E8s j'ai essay=E9: set exceltxt=3Dworkbooks("chemin") marche pas,
set exceltxt=3Dworkbooks(2) idem,
set exceltxt=3Dthisworkbook ,
setexceltxt=3Dzut =E7a ne marche pas non plus.
Maintenant j'ai plus d'imagination et j'aimerai bien un petit coup de
pouce.
J'esp=E8re avoir =E9t=E9 assez clair pour qu'on m'aide un ch'tit peu.
Par la suite tout au long de ta procédure, lorsque tu voudras faire référence au classeur que tu viens d'ouvrir tu utilises la variable Wk
with Wk With Worksheets(".....").. 'code End with end with
Salutations!
"Yann" a écrit dans le message de news: Bonjour,
j'ai un problème. Comme c'est original.
Voilà, J'ai créé une macro dans un classeur excel et elle marche lorsque je copie les données à traiter dedans. Mais j'aimerai que ce classeur ne me serve qu'à porter la macro et qu'il n'y ait pas besoin de copier les informations.
J'ai donc ajouter un lancement automatique qui me demande d'ouvrir le fichier à traiter dans ma macro de départ. Et ça marche. (D'ailleurs merci parce que j'ai trouvé la solution sur le forum). Mais après, je n'arrive pas à activer le nouveau classeur (un fichier texte au format tableau) et résultat ma macro s'éxécute dans le vide sur le document du départ.
j'ai fait ça: Msg = "Sélectionner le fichier texte à traiter" Style = vbOK Title = "Choix du fichier Texte" Response = MsgBox(Msg, Style, Title)
'Récupère le chemin vers le fichier texte qui va bien chemin = Application.GetOpenFilename(",*.txt,,")
Remarque j'ai déclaré une varible exceltxt as workbook
après j'ai essayé: set exceltxt=workbooks("chemin") marche pas, set exceltxt=workbooks(2) idem, set exceltxt=thisworkbook , setexceltxt=zut ça ne marche pas non plus.
Maintenant j'ai plus d'imagination et j'aimerai bien un petit coup de pouce. J'espère avoir été assez clair pour qu'on m'aide un ch'tit peu.
Bonne soirée.
Yann
Bonjour Yann,
Le meilleur moyen est l'utilisation des variables objets.
Dim Wk As Workbook
Dim WkAct as Workbook
Set wkAct = ThisWorkbook 'Une variable pour le classeur qui contient la macro
Par la suite tout au long de ta procédure, lorsque tu voudras faire référence
au classeur que tu viens d'ouvrir tu utilises la variable Wk
with Wk
With Worksheets(".....")..
'code
End with
end with
Salutations!
"Yann" <yann.treussier@gmail.com> a écrit dans le message de news: 1144770899.207372.164320@j33g2000cwa.googlegroups.com...
Bonjour,
j'ai un problème. Comme c'est original.
Voilà,
J'ai créé une macro dans un classeur excel et elle marche lorsque je
copie les données à traiter dedans. Mais j'aimerai que ce classeur ne
me serve qu'à porter la macro et qu'il n'y ait pas besoin de copier
les informations.
J'ai donc ajouter un lancement automatique qui me demande d'ouvrir le
fichier à traiter dans ma macro de départ. Et ça marche. (D'ailleurs
merci parce que j'ai trouvé la solution sur le forum).
Mais après, je n'arrive pas à activer le nouveau classeur (un fichier
texte au format tableau) et résultat ma macro s'éxécute dans le vide
sur le document du départ.
j'ai fait ça:
Msg = "Sélectionner le fichier texte à traiter"
Style = vbOK
Title = "Choix du fichier Texte"
Response = MsgBox(Msg, Style, Title)
'Récupère le chemin vers le fichier texte qui va bien
chemin = Application.GetOpenFilename(",*.txt,,")
Remarque j'ai déclaré une varible exceltxt as workbook
après j'ai essayé: set exceltxt=workbooks("chemin") marche pas,
set exceltxt=workbooks(2) idem,
set exceltxt=thisworkbook ,
setexceltxt=zut ça ne marche pas non plus.
Maintenant j'ai plus d'imagination et j'aimerai bien un petit coup de
pouce.
J'espère avoir été assez clair pour qu'on m'aide un ch'tit peu.
Par la suite tout au long de ta procédure, lorsque tu voudras faire référence au classeur que tu viens d'ouvrir tu utilises la variable Wk
with Wk With Worksheets(".....").. 'code End with end with
Salutations!
"Yann" a écrit dans le message de news: Bonjour,
j'ai un problème. Comme c'est original.
Voilà, J'ai créé une macro dans un classeur excel et elle marche lorsque je copie les données à traiter dedans. Mais j'aimerai que ce classeur ne me serve qu'à porter la macro et qu'il n'y ait pas besoin de copier les informations.
J'ai donc ajouter un lancement automatique qui me demande d'ouvrir le fichier à traiter dans ma macro de départ. Et ça marche. (D'ailleurs merci parce que j'ai trouvé la solution sur le forum). Mais après, je n'arrive pas à activer le nouveau classeur (un fichier texte au format tableau) et résultat ma macro s'éxécute dans le vide sur le document du départ.
j'ai fait ça: Msg = "Sélectionner le fichier texte à traiter" Style = vbOK Title = "Choix du fichier Texte" Response = MsgBox(Msg, Style, Title)
'Récupère le chemin vers le fichier texte qui va bien chemin = Application.GetOpenFilename(",*.txt,,")
Remarque j'ai déclaré une varible exceltxt as workbook
après j'ai essayé: set exceltxt=workbooks("chemin") marche pas, set exceltxt=workbooks(2) idem, set exceltxt=thisworkbook , setexceltxt=zut ça ne marche pas non plus.
Maintenant j'ai plus d'imagination et j'aimerai bien un petit coup de pouce. J'espère avoir été assez clair pour qu'on m'aide un ch'tit peu.
Bonne soirée.
Yann
Yann
Tout d'abord merci, MichDenis, pour la réponse.
Mais, j'ai toujours un problème avec le "Settage" de mon deuxième classeur. J'ai inséré ton code avec le nom de classeur que j'avais déclaré : exceltxt. Set exceltxt= Workbooks.OpenText(Filename:=chemin, Origin:=xlWindows, _
J'obtiens une erreur de compilation : Fonction ou variable attendue, au niveau de cette expression.
Est-ce que cela peut venir du nom de variable que j'ai choisi qui lui plait pas?!! Ou un problème de version, je travaille avec Excel 2000 et VB 6?
Je suis perdu.
Une réponse?
Merci encore.
Tout d'abord merci, MichDenis, pour la réponse.
Mais, j'ai toujours un problème avec le "Settage" de mon deuxième
classeur. J'ai inséré ton code avec le nom de classeur que j'avais
déclaré : exceltxt.
Set exceltxt= Workbooks.OpenText(Filename:=chemin, Origin:=xlWindows, _
Mais, j'ai toujours un problème avec le "Settage" de mon deuxième classeur. J'ai inséré ton code avec le nom de classeur que j'avais déclaré : exceltxt. Set exceltxt= Workbooks.OpenText(Filename:=chemin, Origin:=xlWindows, _
J'obtiens une erreur de compilation : Fonction ou variable attendue, au niveau de cette expression.
Est-ce que cela peut venir du nom de variable que j'ai choisi qui lui plait pas?!! Ou un problème de version, je travaille avec Excel 2000 et VB 6?
Je suis perdu.
Une réponse?
Merci encore.
Yann
Je rajoute un peu d'eau à mon moulin.
J'ai eu une idée qui ne marche pas... mais peut-être que ça aurait pu.
Pour déclarer mon classeur exceltxt j'ai essayé ça: For Each wk In Excel.Workbooks If wk <> exceltrait Then Set exceltxt = wk Next wk erreur d'exécution 438: propriété ou méthode non gérée par cet objet. Remarque: exceltrait c'est le classeur que j'ouvre au départ et qui contient la macro.
Je continue à chercher mais si quelqu'un à une idée je suis preneur.
Bon appétit!
Yann
Je rajoute un peu d'eau à mon moulin.
J'ai eu une idée qui ne marche pas... mais peut-être que ça aurait
pu.
Pour déclarer mon classeur exceltxt j'ai essayé ça:
For Each wk In Excel.Workbooks
If wk <> exceltrait Then Set exceltxt = wk
Next wk
erreur d'exécution 438: propriété ou méthode non gérée par cet
objet.
Remarque: exceltrait c'est le classeur que j'ouvre au départ et qui
contient la macro.
Je continue à chercher mais si quelqu'un à une idée je suis preneur.
J'ai eu une idée qui ne marche pas... mais peut-être que ça aurait pu.
Pour déclarer mon classeur exceltxt j'ai essayé ça: For Each wk In Excel.Workbooks If wk <> exceltrait Then Set exceltxt = wk Next wk erreur d'exécution 438: propriété ou méthode non gérée par cet objet. Remarque: exceltrait c'est le classeur que j'ouvre au départ et qui contient la macro.
Je continue à chercher mais si quelqu'un à une idée je suis preneur.
Bon appétit!
Yann
Yann
A la suite d'essais en tous genres j'ai trouvé une solution.
On peut pas dire que ce soit une vraie solution mais. Au lieu de d'essayer de faire Set avec la commande opentext et son lot d'argument j'utilise open tout court Set exceltxt = Excel.Application.Workbooks.Open(chemin)
Et ça marche... Même si le fichier que j'ouvre est un fichier texte même si je ne vois pas de différence entre open et opentxt ça marche.
Maintenant si quelqu'un peut m'expliquer pourquoi ça marchait pas, ça m'intéresse.
Merci encore MichDenis, j'utilise le système des with wk ... et ça marche au poils.
Salut
A la suite d'essais en tous genres j'ai trouvé une solution.
On peut pas dire que ce soit une vraie solution mais.
Au lieu de d'essayer de faire Set avec la commande opentext et son lot
d'argument j'utilise open tout court
Set exceltxt = Excel.Application.Workbooks.Open(chemin)
Et ça marche... Même si le fichier que j'ouvre est un fichier texte
même si je ne vois pas de différence entre open et opentxt ça
marche.
Maintenant si quelqu'un peut m'expliquer pourquoi ça marchait pas, ça
m'intéresse.
Merci encore MichDenis, j'utilise le système des with wk ... et ça
marche au poils.
A la suite d'essais en tous genres j'ai trouvé une solution.
On peut pas dire que ce soit une vraie solution mais. Au lieu de d'essayer de faire Set avec la commande opentext et son lot d'argument j'utilise open tout court Set exceltxt = Excel.Application.Workbooks.Open(chemin)
Et ça marche... Même si le fichier que j'ouvre est un fichier texte même si je ne vois pas de différence entre open et opentxt ça marche.
Maintenant si quelqu'un peut m'expliquer pourquoi ça marchait pas, ça m'intéresse.
Merci encore MichDenis, j'utilise le système des with wk ... et ça marche au poils.
Salut
michdenis
Bonjour Yann,
| un fichier texte même si je ne vois pas de différence entre open et opentxt
| Set exceltxt = Excel.Application.Workbooks.Open(chemin & fichier.xls)
Tu as raison de ton poser la question... ça ressemble plus à un "bug" ... incongruité d'excel ... car il est toujours possible de faire ceci : '------------------------- Dim Wk as workbook Workbooks.OpenText "C:MonFichier.txt" Set Wk = ActiveWorkbook Msgbox Wk.Name renvoie bien : "MonFichier.txt" '-------------------------
Il est aussi possible d'ouvrir un fichier .csv sans problème. set Wk = Workbooks.Open("c:MonFichier.csv")
Si il y a vraiment une raison du comportement de "OpenText", je ne la connais pas.
Salutations!
"Yann" a écrit dans le message de news: A la suite d'essais en tous genres j'ai trouvé une solution.
On peut pas dire que ce soit une vraie solution mais. Au lieu de d'essayer de faire Set avec la commande opentext et son lot d'argument j'utilise open tout court Set exceltxt = Excel.Application.Workbooks.Open(chemin)
Et ça marche... Même si le fichier que j'ouvre est un fichier texte même si je ne vois pas de différence entre open et opentxt ça marche.
Maintenant si quelqu'un peut m'expliquer pourquoi ça marchait pas, ça m'intéresse.
Merci encore MichDenis, j'utilise le système des with wk ... et ça marche au poils.
Salut
Bonjour Yann,
| un fichier texte même si je ne vois pas de différence entre open et opentxt
| Set exceltxt = Excel.Application.Workbooks.Open(chemin & fichier.xls)
Tu as raison de ton poser la question... ça ressemble plus à un "bug" ... incongruité
d'excel ... car il est toujours possible de faire ceci :
'-------------------------
Dim Wk as workbook
Workbooks.OpenText "C:MonFichier.txt"
Set Wk = ActiveWorkbook
Msgbox Wk.Name renvoie bien : "MonFichier.txt"
'-------------------------
Il est aussi possible d'ouvrir un fichier .csv sans problème.
set Wk = Workbooks.Open("c:MonFichier.csv")
Si il y a vraiment une raison du comportement de "OpenText", je ne la connais pas.
Salutations!
"Yann" <yann.treussier@gmail.com> a écrit dans le message de news: 1144853495.144597.185790@u72g2000cwu.googlegroups.com...
A la suite d'essais en tous genres j'ai trouvé une solution.
On peut pas dire que ce soit une vraie solution mais.
Au lieu de d'essayer de faire Set avec la commande opentext et son lot
d'argument j'utilise open tout court
Set exceltxt = Excel.Application.Workbooks.Open(chemin)
Et ça marche... Même si le fichier que j'ouvre est un fichier texte
même si je ne vois pas de différence entre open et opentxt ça
marche.
Maintenant si quelqu'un peut m'expliquer pourquoi ça marchait pas, ça
m'intéresse.
Merci encore MichDenis, j'utilise le système des with wk ... et ça
marche au poils.
| un fichier texte même si je ne vois pas de différence entre open et opentxt
| Set exceltxt = Excel.Application.Workbooks.Open(chemin & fichier.xls)
Tu as raison de ton poser la question... ça ressemble plus à un "bug" ... incongruité d'excel ... car il est toujours possible de faire ceci : '------------------------- Dim Wk as workbook Workbooks.OpenText "C:MonFichier.txt" Set Wk = ActiveWorkbook Msgbox Wk.Name renvoie bien : "MonFichier.txt" '-------------------------
Il est aussi possible d'ouvrir un fichier .csv sans problème. set Wk = Workbooks.Open("c:MonFichier.csv")
Si il y a vraiment une raison du comportement de "OpenText", je ne la connais pas.
Salutations!
"Yann" a écrit dans le message de news: A la suite d'essais en tous genres j'ai trouvé une solution.
On peut pas dire que ce soit une vraie solution mais. Au lieu de d'essayer de faire Set avec la commande opentext et son lot d'argument j'utilise open tout court Set exceltxt = Excel.Application.Workbooks.Open(chemin)
Et ça marche... Même si le fichier que j'ouvre est un fichier texte même si je ne vois pas de différence entre open et opentxt ça marche.
Maintenant si quelqu'un peut m'expliquer pourquoi ça marchait pas, ça m'intéresse.
Merci encore MichDenis, j'utilise le système des with wk ... et ça marche au poils.
Salut
Yann
Merci beaucoup pour toutes ces infos,
je vais voir à réinstaller VBA ou à faire une mise à jour. C'est vraiment rageant de bloquer pour une raison pas logique.
Bonne continuation.
Yann
Merci beaucoup pour toutes ces infos,
je vais voir à réinstaller VBA ou à faire une mise à jour. C'est
vraiment rageant de bloquer pour une raison pas logique.