Chemin relatif (encore)

Résolu
cs_westa Messages postés 12 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007 - 20 mars 2007 à 09:14
cs_westa Messages postés 12 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007 - 20 mars 2007 à 11:32
Bonjour à tous,
un problème idiot qui m'a fait perdre mon après midi hier...
J'ai
fait une macro par apprentissage pour importer un fichier texte dans un
onglet. Le problème, c'est que je veux enlever le lien absolu pour le
transformer en lien relatif (pour aller sur un autre PC). J'ai
bidouillé mon truc, ca a marché deux fois, puis plus rien....
Voici une partie de mon code (qui a marché 2 fois) :
 
Sheets("ascii brut").Select
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;essais ASCII\base.txt"" _
        , Destination:=Range("A1"))
        .Name = "base"
        .FieldNames = True
        .RowNumbers = False
       ....
       End With

le lien absolu était : "C:\Documents and Settings\Munier\Bureau\Stage Moteur\Exploitation Excel\essais ASCII\base.txt"
(le fichier excel est dans "C:\Documents and Settings\Munier\Bureau\Stage Moteur\Exploitation Excel") et ca marchait.
j'ai essayé de mettre un truc du genre :

With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;ActiveWorkbook.Path & "\essais ASCII\base.txt"" _
        , Destination:=Range("A1"))

mais ca donne rien.... et j'aimerais énormément que vous m'aidiez dans ma démarche !!
Merci beaucoup pour votre aide !!
Romain

25 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:19
Chemin = ActiveWorkbook.Path & "\essais ASCII\base.txt" comme ça doit suffir! Quoique non peut-être pas vu la synthaxe essaye ça:

Chemin = "TEXT;" & ActiveWorkbook.Path & "\essais ASCII\base.txt"

With ActiveSheet.QueryTables.Add(Connection:= Chemin, Destination:=Range("A1"))

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
3
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 09:24
Salut, c'est quoi l'erreur?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 09:26
Tu n'as pas des " en trop?

"TEXT;ActiveWorkbook.Path & "\essais ASCII\base.txt""

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 09:27
Dim Chemin As Sring
Chemin = ActiveWorkbook.Path & "\essais ASCII\base.txt""

With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT";Chemin_
        , Destination:=Range("A1"))

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_westa Messages postés 12 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007
20 mars 2007 à 09:44
salut drikce !! et merci pour tes réponses
j'ai tenté ton dernier code mais j'ai une erreur de syntaxe que je vois pas :

 Sheets("ascii brut").Select
    Range("A1").Select
    Chemin = ActiveWorkbook.Path & "\essais ASCII\base.txt"""
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT";Chemin_
        , Destination:=Range("A1"))
        .Name = "base"

merci !
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 09:51
Je connait pas cette fonction, j'ai seulement mis un bout de code en fonction de celui que tu as mis! Remplace le ; qui après text pas une , pour voir!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
cs_westa Messages postés 12 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007
20 mars 2007 à 09:53
ca marche pas non plus,
dans les deux cas, il désigne l'erreur en surlignant ces deux llignes :

With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT" ; Chemin_
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 09:57
Pourquoi "Text", voici l'aide fourni par VBA sur cette fonction:

With ActiveSheet.QueryTables.Add(Connection:=connstring, _
        Destination:=Range("B1"), Sql:=sqlstring)
    .Refresh
End With

donc peut-être:

With ActiveSheet.QueryTables.Add(Connection:= Chemin, Destination:=Range("A1"))

mais il manque le troisième argument!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:01
Ok; si c'est un fichier Text: d'accord d'où le text!

Fichier texte. Chaîne sous la forme « TEXT;<nom et chemin d'un fichier texte> », dans laquelle « TEXT » est obligatoire mais n'est pas localisé.

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:02
J'essayerai donc:

With ActiveSheet.QueryTables.Add(Connection:= Text;Chemin, Destination:=Range("A1"))

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:04
J'ai trouvé la synthaxe! Enfin! Comme quoi l'aide ça aide!

Connection := "TEXT;C:\My Documents\19980331.txt"

With ActiveSheet.QueryTables.Add(Connection:= "TEXT;Chemin", Destination:=Range("A1"))

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
cs_westa Messages postés 12 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007
20 mars 2007 à 10:07
parce qu'il s'agit d'importer des données (données/données externes/importer...), et pour excel, le type de fichiers par défaut est "toutes les sources de données", qu'il faut donc que je change en mettant "Fichiers texte".

j'ai essayé ton code, la compilation est ok, mais à l'exécution, erreur ! j'ai aussi essayé de jouer avec les virgules, point-virgules et les guillemets mais sans succès... je sèche
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:11
C'est quoi l'erreur parce que là j'ai utilisé la synthaxe comme danss l'exemple, voir plus haut?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:12
Si cela peut t'aider d'avantages:

Cet exemple permet d'importer un fichier texte de type largeur fixe dans une nouvelle table de requête. La première colonne du fichier texte a une largeur de cinq caractères et est importée en tant que texte. La deuxième colonne a une largeur de quatre caractères et est ignorée. Le reste du fichier texte est importé dans la troisième colonne et a le format Standard.



Set shFirstQtr =  Workbooks(1).Worksheets(1)
Set qtQtrResults = shFirstQtr.QueryTables. Add ( _
    Connection : = "TEXT;C:\My Documents\19980331.txt",
    Destination := shFirstQtr.Cells(1,1))
With qtQtrResults
    .TextFileParsingType = xlFixedWidth
    .TextFileFixedColumnWidths := Array(5,4)
    .TextFileColumnDataTypes := _
        Array(xlTextFormat, xlSkipColumn, xlGeneralFormat)
    .Refresh
End With





 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:13
Copier\Coller loupé désolé:

Cet exemple permet d'importer un fichier texte de type largeur fixe dans une nouvelle table de requête.
La première colonne du fichier texte a une largeur de cinq caractères et est importée en tant que texte.
La deuxième colonne a une largeur de quatre caractères et est ignorée.
Le reste du fichier texte est importé dans la troisième colonne et a le format Standard.
Set shFirstQtr =  Workbooks(1).Worksheets(1)
Set qtQtrResults = shFirstQtr.QueryTables. Add ( _
Connection : = "TEXT;C:\My Documents\19980331.txt",
Destination := shFirstQtr.Cells(1,1))

With qtQtrResults

.TextFileParsingType = xlFixedWidth
.TextFileFixedColumnWidths := Array(5,4)
.TextFileColumnDataTypes := _
Array(xlTextFormat, xlSkipColumn, xlGeneralFormat)
.Refresh

End With


 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
cs_westa Messages postés 12 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007
20 mars 2007 à 10:15
ahah merci, c'est ok pour la syntaxe !!

MAIS maintenant, comme avant, il me dit que mon fichier .txt n'existe pas, ou qu'il a été renommé, ce qui n'est bien sur pas le cas !!
j'ai essayé de jouer avec et sans le \ dans :
Chemin = ActiveWorkbook.Path & "\essais ASCII\base.txt"""
et aussi avec le nombre de guillemets à la fin, mais ca donne rien

merci de le consacrer beaucoup de ton temps !

ps : mtnt, il me surligne l'erreur juste avant le endwith de la fonction "With ActiveSheet.QueryTables.Add", j'imagine que c'est normal !
0
cs_westa Messages postés 12 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007
20 mars 2007 à 10:18
désolé, jsuis un peu en retard, la syntaxe est bonne avec ta réponse précédente :

Connection := "TEXT;C:\My Documents\19980331.txt"

With ActiveSheet.QueryTables.Add(Connection:= "TEXT;Chemin", Destination:=Range("A1"))

mais toujours pas de fichier d'apres lui ...
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:22
Chemin = ActiveWorkbook.Path & "\essais ASCII\base.txt"

Mais t'es sur qu'il existe, fais text avant:

If Dir(chemin) = True Then msgbox "Le chemin existe")

ActiveWorkbook veut dire que le fichier est dans le même répertoire que ton fichier excel + "\essais ASCII\base.txt"

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
20 mars 2007 à 10:24
Pour que ça fonctionne il faut que ton fichier excel soit dans ce répertoire:
"C:\Documents and Settings\Munier\Bureau\Stage Moteur\Exploitation Excel"

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
cs_westa Messages postés 12 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007
20 mars 2007 à 10:27
ahah ouuufff
ca marche enfin !!!! merci beaucoup !!
j'ai tenté avec en changeant le dossier exploitation excel de place et ca marche nickel ! parfait
merci encore !
0
Rejoignez-nous