Importer un fichier texte dans Excel avec bouton - VB/VBA/VBS - Programmation
Marsh Posté le 14-03-2006 à 18:56:21
Bonjour,
tu peux très bien donner l'emplacement de ton fichier (et son nom) depuis une variable.
Voilà comment je procéderai :
Dim Repertoire As String |
Encore que, pour le répertoire, tu devrais plutôt utiliser une InputBox, pour faire simple.
edit : ortho
Marsh Posté le 14-03-2006 à 19:09:24
merci a toi je vais vite tester ca des demain !!!
pour l input box j y ai pense mais je ne sais pa comment
faire........je debute ...je debute.....
merci a toi d'avance si tu peux m aider de nouveau
pour l inputbox
Marsh Posté le 14-03-2006 à 19:33:26
Tu peux faire comme cela :
|
Remarque : il n'y a aucune vérification. Attention si l'utilisateur ne rentre rien...
Marsh Posté le 16-03-2006 à 12:32:59
petite question de nouveau........vu que j ai mis la fonction inputbox
j ai introduit dans ma macro une boucle pour gerer
une erreur sur le nom de fichier (erreur de frappe uniquement sur le nom et pas le chemin)
ca marche mais le pb que j ai c est le suivant
si je fais annuler au lieu de ok ben ca me dit que j ai une erreur
et donc je tourne en rond, car si j ai une erreur ca me redemande le nom
du fichier.....
le plus simple est de faire terminer la marco et la relancer
mais vu que j ai vu le bug .......je veux le regler maintenant
merci encore
(j ai un peu contourne le truc en mettant une boite de choix dans le cas d une erreur
mais il faut choisir de recommencer ou pas.......c est bien mais ca m ennerve
de ne pas savoir comment gerer le choix annuler dans un "inputbox" )
Marsh Posté le 16-03-2006 à 19:30:32
Lorsque l'utilisateur clique sur "Annuler", l'InputBox retourne une chaine vide. Tu pourrais utiliser cette information dans ta boucle...
Marsh Posté le 16-03-2006 à 20:53:38
oui j ai vu ca !!!
mais le pb c est que si je met cette condition,
quand l utilisateur va entrer un texte vide ca
fera l equivalent de annuler....pas top
mais la boite de choix que j ai mise est pas si mal ....
meme si j aimerai passer par un autre moyen
Marsh Posté le 22-03-2006 à 15:55:43
bonjour
voila mon nouveau petit pb !!!
je souhaite recuperer la valeur d une cellule dans une feuille differente (feuil2)
de la feuille en cours (feuil1).
le seul moyen que j ai trouve est le suivant :
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 22/03/2006 par ..
'
Dim cellule_a_controler As String
Dim a As String
Dim b As String
Dim resultat As String
Sheets("feuil2" ).Select
cellule_a_controler = Range("A2" ).Value
Sheets(feuil1).Select
If cellule_a_controler = "pas ok" Then
Range("A1" ) = 2
Range("A2" ) = cellule_a_controler
Else
Range("A1" ) = 1
Range("A2" ) = cellule_a_controler
End If
'
End Sub
n est il pas possible en travaillant dans la "feuil1" de recuperer les valeurs de la "feuil2"
sans aller dans la feuil2 ??? cela pour gagner du temps car je dois
comparer 2 tableaux de 800 lignes (un tableau dans la "feuil1" et un dans la "feuil2" )
je regarde chaques lignes du tableau de la "feuil2" si elles existent dans le tableau de la "feuil1",
si oui je mets alors les donnees de la "feuil2" celluleX dans la "feuil1" celluleY
merci d'avance
Marsh Posté le 22-03-2006 à 21:07:23
Tu n'es pas obligé de sélectionner la feuille : contente-toi de préciser à quelle feuille appartient ton Range. Exemple :
Worksheets("Feuil2" ).Cells(2, 1).Value |
Marsh Posté le 23-03-2006 à 00:24:42
arghhh j ai teste ca mais ....ca a pas marche..........
je reteste ca demain peut etre pas la syntaxe exacte...........
merci
Marsh Posté le 23-03-2006 à 09:40:38
bon je viens de tester ca mais helas ca ne marche pas .......
je merdouille dans la syntaxe je pense ou alors c est pas possible
car le pb c est que je veux faire evoluer en auto la cellule !!!!
donc comme cela :
Dim cellule_a_controler
Dim a As String
Dim b
a = "feuil2"
b = Array(2, 1) -> j ai essaye avec b = "2, 1" marche pas non plus....
cellule_a_controler = Worksheets("feuil2" ).Cells(b).Value -> si je mets "a" a la place de feuil2 ca marche pas....
If cellule_a_controler = "2" Then
Range("A1" ) = 2
Range("A2" ) = cellule_a_controler
Else
Range("A1" ) = 1
Range("A2" ) = cellule_a_controler
End If
End Sub
merci a vous pour vos conseils
Marsh Posté le 23-03-2006 à 18:59:42
Cells(b).Value |
Tu dois donner les coordonnées de la cellule en dur (impossible par String ou dans un tableau).
Ce que tu peux faire, par contre, c'est ça :
Dim Valeur As String |
edit : place ton code dans les balises Fixed (bouton "Fixe" quand tu fais ton message), c'est plus clair pour tout le monde
Marsh Posté le 24-03-2006 à 00:52:12
ok pour les balises je vais regarder ca
par contre pour la methode avec ligne et colonne je crois que j ai teste et .....marche pas
en fait si je parametre pas worksheets ca marche avec range et en parametrant la cellule....
je dois gueuniller de temps en temps avec la syntaxe
donc la tout a l air de bien marcher
merci a toi pour tes conseils !!!
avec un peu de temps ca viens doucement ce vba
Marsh Posté le 14-03-2006 à 12:11:36
bonjour
voila je voudrais importer un fichier texte via un bouton dans excel
avec la commande "activesheet.querytable.add".
le hic c est que mon fichier n est jamais au meme endroit
il porte toujours le meme nom mais pas le meme repertoire.
j ai reussi a faire afficher dans une cellule en texte l emplacement exacte
du fichier mais il m est impossible de l integrer dans la commande querytable !!!!
voila ma commande qui marche :
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;D:\AAClientsDAO\D5122.Machine Montage Gaines\nomenclature.txt", _
Destination:=Range("A1" ))
.Name = "nomenclature_12"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.Refresh BackgroundQuery:=False
End With
End Sub
je voudrais donc que le texte suivant se "genere" en automatique (ce texte se met deja en automatique dans une cellule avant de lancer la commande querytable):
D:\AAClientsDAO\D5122.Machine Montage Gaines\nomenclature.txt
grace a cette commande :
Range("L5" ).Select
ActiveCell.FormulaR1C1 = "=CELL(""nomfichier"", R[-4]C[-11])"
Range("L6" ).Select
Range("L6" ).Select
ActiveCell.FormulaR1C1 = "=REPLACE(R5C12, SEARCH(""["",R5C12), 35, ""nomenclature.txt"" )"
Selection.Copy
Range("L7" ).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Columns("L:L" ).Select
Application.CutCopyMode = False
MERCI A VOUS