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...........
 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