Chemin relatif (encore) [Résolu]

Signaler
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007
-
cs_westa
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007
-
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

Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007

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 !
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007

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_
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007

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
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007

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 !
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007

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 ...
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
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:
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007

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 !
1 2