Importer données fichier texte excel
Résolu/Fermé
ath80
ath80
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
ath80
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
A voir également:
- Importer données fichier texte excel
- Importer données fichier texte excel ✓ - Forum - Excel
- NUMBERS : importer données fichier texte ✓ - Forum - MacOS
- Importer des fichiers textes sur excel ✓ - Forum - Excel
- Extraire données fichier texte python - Forum - Python
- Récupérer des données d'un fichier texte ✓ - Forum - Python
10 réponses
cs_Le Pivert
16 févr. 2016 à 10:42
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
16 févr. 2016 à 10:42
ath80
17 févr. 2016 à 11:16
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
17 févr. 2016 à 11:16
Déjà merci de votre aide.
Ci-dessous, j'ai joint mon fichier:
https://www.cjoint.com/c/FBrkphD13j5
Dans la feuille "PV", on voit comment sont copiées les données. Dans la feuille exemple, on retrouve la manière dont je voudrais qu'elles soient copiées ("Assistant importation de texte" de manière automatique).
Voici un exemple de fichier texte que je voudrais copier:
https://www.cjoint.com/c/FBrkogJqJk5
Ci-dessous, j'ai joint mon fichier:
https://www.cjoint.com/c/FBrkphD13j5
Dans la feuille "PV", on voit comment sont copiées les données. Dans la feuille exemple, on retrouve la manière dont je voudrais qu'elles soient copiées ("Assistant importation de texte" de manière automatique).
Voici un exemple de fichier texte que je voudrais copier:
https://www.cjoint.com/c/FBrkogJqJk5
cs_Le Pivert
17 févr. 2016 à 14:41
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
17 févr. 2016 à 14:41
Voilà le classeur opérationnel:
http://www.cjoint.com/c/FBrnOtYDaiQ
http://www.cjoint.com/c/FBrnOtYDaiQ
ath80
17 févr. 2016 à 15:38
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
17 févr. 2016 à 15:38
Merci pour le fichier. Je trouve cette méthode plus simple.
Par contre, sais tu copier les données de la même manière que sur la feuille exemple ?Pour chaque ligne du code, je voudrais que les données suivant un espace soient inscrites dans la cellule de droite. En manuel, la fonction utilisée est "Assistant importation de texte".
Par contre, sais tu copier les données de la même manière que sur la feuille exemple ?Pour chaque ligne du code, je voudrais que les données suivant un espace soient inscrites dans la cellule de droite. En manuel, la fonction utilisée est "Assistant importation de texte".
cs_Le Pivert
17 févr. 2016 à 15:42
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
17 févr. 2016 à 15:42
Normalement si tu cliques sur Importer texte, ça le fait!
ath80
17 févr. 2016 à 16:17
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
17 févr. 2016 à 16:17
Ça ne fonctionne pas chez moi.
cs_Le Pivert
Modifié par cs_Le Pivert le 17/02/2016 à 16:26
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
Modifié par cs_Le Pivert le 17/02/2016 à 16:26
Tu cliques sur Développeur dans le ruban, ensuite en haut à gauche tu cliques sur Enregistrer une macro.
Ensuite tu exécutes la procédure que tu fais habituellement avec "Assistant importation de texte". Quand tu as fini, tu cliques sur Arrêter macro. Tu vas dans l'éditeur dans module à gauche tu as ta macro. Tu la copies et tu la postes. Je l'automatiserais.
pour afficher l'onglet Développeur dans le ruban:
https://support.office.com/fr-fr/article/Afficher-l-onglet-D%C3%A9veloppeur-ou-ex%C3%A9cuter-le-mode-d%C3%A9veloppeur-1b4a8529-3094-432a-9a7f-53935089e5ed
Ensuite tu exécutes la procédure que tu fais habituellement avec "Assistant importation de texte". Quand tu as fini, tu cliques sur Arrêter macro. Tu vas dans l'éditeur dans module à gauche tu as ta macro. Tu la copies et tu la postes. Je l'automatiserais.
pour afficher l'onglet Développeur dans le ruban:
https://support.office.com/fr-fr/article/Afficher-l-onglet-D%C3%A9veloppeur-ou-ex%C3%A9cuter-le-mode-d%C3%A9veloppeur-1b4a8529-3094-432a-9a7f-53935089e5ed
ath80
17 févr. 2016 à 17:51
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
17 févr. 2016 à 17:51
J'avais déjà essayé en enregistrant une macro et j'obtiens uniquement ce code:
Sub Macro1()
Range("A1").Select
ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:=False, _
DisplayAsIcon:=False
End Sub
Sub Macro1()
Range("A1").Select
ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:=False, _
DisplayAsIcon:=False
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cs_Le Pivert
17 févr. 2016 à 17:01
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
17 févr. 2016 à 17:01
Bon je l'ai fait, voilà à mettre à la place de l'ancienne:
Option Explicit Sub Bouton6_Clic() Dim Fichier Worksheets("PV").Select Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt") If Fichier <> False Then With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;" & Fichier, Destination:=Range("A1")) .Name = "essai" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 850 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = True .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = True .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Else MsgBox "Pour importer des données dans Excel, vous devez choisir un fichier texte !" End If End Sub
ath80
17 févr. 2016 à 17:54
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
17 févr. 2016 à 17:54
Oui justement j'allais répondre, j'ai trouvé la solution. J'ai mis ça pour la fin du code:
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = True
.TextFileOtherDelimiter = ""
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
Merci beaucoup en tout cas !!
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = True
.TextFileOtherDelimiter = ""
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
Merci beaucoup en tout cas !!
ath80
18 févr. 2016 à 18:17
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
18 févr. 2016 à 18:17
Bonjour,
J'ai une question qui n'a rien à avoir avec ma question initiale.
Voici mon fichier:
https://www.cjoint.com/c/FBsrqUPk1SR
Le module "programme_principal" pilote l'ensemble des autres modules.
A partir de celui-ci, je supprime l'ancienne feuille "PV". Je vais copier le nouveau fichier dans celle-ci. Dans le module "detection_erreur_pv", je regarde si deux cellules sont vides, j'affiche un message si la condition est vérifiée et dans chacun des cas je voudrais arrêter l'éxécution de l'ensemble des modules. C'est à dire aller à la fin du module "programme_principal" sachant qu'après le call detection_erreur_pv, il y aura d'autres macros.
Comment faire ?
J'ai une question qui n'a rien à avoir avec ma question initiale.
Voici mon fichier:
https://www.cjoint.com/c/FBsrqUPk1SR
Le module "programme_principal" pilote l'ensemble des autres modules.
A partir de celui-ci, je supprime l'ancienne feuille "PV". Je vais copier le nouveau fichier dans celle-ci. Dans le module "detection_erreur_pv", je regarde si deux cellules sont vides, j'affiche un message si la condition est vérifiée et dans chacun des cas je voudrais arrêter l'éxécution de l'ensemble des modules. C'est à dire aller à la fin du module "programme_principal" sachant qu'après le call detection_erreur_pv, il y aura d'autres macros.
Comment faire ?
cs_Le Pivert
18 févr. 2016 à 18:37
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
18 févr. 2016 à 18:37
Avec une variable Boolean déclarée Public pour fonctionner dans tous les modules:
Insérer un module et mettre:
Dans le module Sub detection_erreur_pv() parce que c'est le dernier
et dans le module principal:
Tu comprends le principe, après tu fais ta sauce, c'est juste une direction à prendre
@+ Le Pivert
Insérer un module et mettre:
Option Explicit Public continuer As Boolean
Dans le module Sub detection_erreur_pv() parce que c'est le dernier
Sub detection_erreur_pv() Sheets("PV").Select If Cells(8, 3).Value = "" Then MsgBox "Numéro de l'OP manquant" If Cells(9, 4).Value = "" Then MsgBox "Numéro de l'OP manquant" continuer = False End Sub
et dans le module principal:
Sub programme_principal() Application.ScreenUpdating = False continuer = True Call suppression_pv Call ouverture_pv Call detection_erreur_pv Sheets("Synthèse").Select If continuer = False Then Exit Sub Else 'tes macros End If End Sub
Tu comprends le principe, après tu fais ta sauce, c'est juste une direction à prendre
@+ Le Pivert
ath80
19 févr. 2016 à 12:04
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
19 févr. 2016 à 12:04
Bonjour,
Merci encore une fois pour ton aide !
https://www.cjoint.com/c/FBtlcJOe4ac
En dessous de else j'ai mis la suite du programme à réaliser s'il ne manque pas de paramètres.
Quand j'importe un fichier avec des paramètres manquants le programme se stoppe par contre quand il y a l'ensemble des paramètres (Cells(8, 3) et Cells(9, 4) le programme se stoppe également.
Dans mon exepemple, s'il ne manque pas de paramètre je voudrais que les étapes suivantes soient réalisées:
Call fermeture
Sheets("Synthèse").Select
J'ai joint un fichier avec paramètre manquant:
https://www.cjoint.com/c/FBtldqVPAzc
et un sans:
https://www.cjoint.com/c/FBtlekqYLzc
Merci encore une fois pour ton aide !
https://www.cjoint.com/c/FBtlcJOe4ac
En dessous de else j'ai mis la suite du programme à réaliser s'il ne manque pas de paramètres.
Quand j'importe un fichier avec des paramètres manquants le programme se stoppe par contre quand il y a l'ensemble des paramètres (Cells(8, 3) et Cells(9, 4) le programme se stoppe également.
Dans mon exepemple, s'il ne manque pas de paramètre je voudrais que les étapes suivantes soient réalisées:
Call fermeture
Sheets("Synthèse").Select
J'ai joint un fichier avec paramètre manquant:
https://www.cjoint.com/c/FBtldqVPAzc
et un sans:
https://www.cjoint.com/c/FBtlekqYLzc
cs_Le Pivert
19 févr. 2016 à 14:08
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
19 févr. 2016 à 14:08
Voilà,
Petite précision, tu n'es pas obligé de mettre chaque macro dans un module différent, tu peux tout mettre dans le même module. Cela permet de faire des déclarations communes a chaque macro en dehors des macros en dessous de Option Explicit. Cela t'évite aussi de faire une déclaration de variable Public. A toi de voir!
Sub detection_erreur_pv() Sheets("PV").Select If Cells(8, 3).Value = "" Then MsgBox "Numéro de l'OP manquant" continuer = False ElseIf Cells(9, 4).Value = "" Then MsgBox "Numéro de machine manquant" continuer = False Else continuer = True End If End Sub
Petite précision, tu n'es pas obligé de mettre chaque macro dans un module différent, tu peux tout mettre dans le même module. Cela permet de faire des déclarations communes a chaque macro en dehors des macros en dessous de Option Explicit. Cela t'évite aussi de faire une déclaration de variable Public. A toi de voir!
h3ler
20 févr. 2016 à 06:59
- Messages postés
- 25
- Date d'inscription
- mardi 16 février 2016
- Statut
- Membre
- Dernière intervention
- 23 février 2016
20 févr. 2016 à 06:59
Bonjour.
Je n'ai pas bien compris aussi ta deuxième question. Et le fichier que tu as joint est corrompu. Ajoute de nouveau ton fichier pour que l’on puisse avoir une bonne idée de ta deuxième question.
Merci.
Je n'ai pas bien compris aussi ta deuxième question. Et le fichier que tu as joint est corrompu. Ajoute de nouveau ton fichier pour que l’on puisse avoir une bonne idée de ta deuxième question.
Merci.
cs_Le Pivert
20 févr. 2016 à 07:36
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
20 févr. 2016 à 07:36
Bonjour h3ler,
Le fichier n'est pas corrompu, il fonctionne bien; J'ai déjà répondu à la demande
@+ Le Pivert
Le fichier n'est pas corrompu, il fonctionne bien; J'ai déjà répondu à la demande
@+ Le Pivert
ath80
22 févr. 2016 à 14:10
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
22 févr. 2016 à 14:10
Bonjour,
Ci-joint le fichier modifié:
https://www.cjoint.com/c/FBwnjGlEEJa
Lorsque j'importe un fichier sans erreur l'ensemble du programme est exécuté c'est donc bon par contre quand j'importe un fichier avec des infos manquantes l'ensemble du programme est également exécuté (le module fermeture est exécuté). Je ne comprends pas pourquoi puisque si continuer = false on doit exécuter:
Exit Sub
Ci-joint le fichier modifié:
https://www.cjoint.com/c/FBwnjGlEEJa
Lorsque j'importe un fichier sans erreur l'ensemble du programme est exécuté c'est donc bon par contre quand j'importe un fichier avec des infos manquantes l'ensemble du programme est également exécuté (le module fermeture est exécuté). Je ne comprends pas pourquoi puisque si continuer = false on doit exécuter:
Exit Sub
cs_Le Pivert
22 févr. 2016 à 14:33
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
22 févr. 2016 à 14:33
Cela fonctionne comme indiqué:
Si le fichier est vrai, cela ferme et sélectionne la feuille Synthèse
Si le fichier est faux un message apparaît et le programme s'arrête. Mais on reste sur la feuille où est situé le bouton, c'est à dire le feuille Synthèse.
C'est cela qui te trompe. A moins que tu veuille faire autre chose?
Si le fichier est vrai, cela ferme et sélectionne la feuille Synthèse
Si le fichier est faux un message apparaît et le programme s'arrête. Mais on reste sur la feuille où est situé le bouton, c'est à dire le feuille Synthèse.
C'est cela qui te trompe. A moins que tu veuille faire autre chose?
ath80
22 févr. 2016 à 15:11
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
22 févr. 2016 à 15:11
Mon problème est le suivant:
Si le fichier est faux un message apparaît mais le programme ne s'arrête pas. Il continue d'exécuter la fin du programme c'est à dire:
Call fermeture
Sheets("Synthèse").Select
Je souhaiterai qu'il n'exécute pas ces étapes.
Si le fichier est faux un message apparaît mais le programme ne s'arrête pas. Il continue d'exécuter la fin du programme c'est à dire:
Call fermeture
Sheets("Synthèse").Select
Je souhaiterai qu'il n'exécute pas ces étapes.
cs_Le Pivert
22 févr. 2016 à 15:44
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
22 févr. 2016 à 15:44
Changer cela dans les 2 modules
@+
Option Explicit Public continuer As Boolean Sub detection_erreur_pv() Sheets("PV").Select If Cells(8, 3).Value = "" Then MsgBox "Numéro de l'OP manquant" continuer = False ElseIf Cells(9, 4).Value = "" Then MsgBox "Numéro de machine manquant" continuer = False Else continuer = True End If End Sub
Option Explicit Sub programme_principal() Application.ScreenUpdating = False Call suppression_pv 'continuer = true Call ouverture_pv 'continuer = true Call detection_erreur_pv 'continuer = true If continuer = False Then Exit Sub 'continuer = false Else Call fermeture 'continuer = true Sheets("Synthèse").Select 'continuer = true End If Application.ScreenUpdating = True End Sub
@+
ath80
23 févr. 2016 à 08:44
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
23 févr. 2016 à 08:44
Bonjour,
Là c'est le phénomène inverse qui se produit. Lorsque j'importe un fichier faux (avec paramètres manquants) le programme s'arrête. Lorsque j'importe un fichier vrai, le programme s'arrête aussi alors que je souhaiterai que la suite du programme soit réalisée dans cette condition:
Call fermeture
Sheets("Synthèse").Select
J'ai remarqué que le premier code était identique à celui que j'avais déjà.
Là c'est le phénomène inverse qui se produit. Lorsque j'importe un fichier faux (avec paramètres manquants) le programme s'arrête. Lorsque j'importe un fichier vrai, le programme s'arrête aussi alors que je souhaiterai que la suite du programme soit réalisée dans cette condition:
Call fermeture
Sheets("Synthèse").Select
J'ai remarqué que le premier code était identique à celui que j'avais déjà.
ath80
23 févr. 2016 à 08:56
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
23 févr. 2016 à 08:56
C'est bon il s'agit d'une erreur de ma part.
Au début du programme principal j'avais ajouté:
Option Explicit
Public continuer As Boolean
Au lieu de:
Option Explicit
Je ne comprends pas pourquoi cela a un impact ...
Au début du programme principal j'avais ajouté:
Option Explicit
Public continuer As Boolean
Au lieu de:
Option Explicit
Je ne comprends pas pourquoi cela a un impact ...
cs_Le Pivert
23 févr. 2016 à 08:59
- Messages postés
- 7784
- Date d'inscription
- jeudi 13 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2022
23 févr. 2016 à 08:59
Voici le classeur corrigé. Pour voir la différence des 2 actions, saisir du texte dans la cellule A1 de la feuille Exemple.
comme le montre cette macro:
Si c'est true la cellule A1 sera effacée, sinon elle restera telle quel
http://www.cjoint.com/c/FBxh2H2qEsQ
Sub fermeture() Sheets("exemple").Select Cells.Select Range("A1").Activate Selection.ClearContents End Sub
comme le montre cette macro:
Si c'est true la cellule A1 sera effacée, sinon elle restera telle quel
http://www.cjoint.com/c/FBxh2H2qEsQ
ath80
24 févr. 2016 à 17:53
- Messages postés
- 208
- Date d'inscription
- dimanche 15 juillet 2007
- Statut
- Membre
- Dernière intervention
- 15 mars 2018
24 févr. 2016 à 17:53
Le lien à l'air mort mais comme dit précédemment je suis parvenu à réaliser ce que je voulais faire.
Merci beaucoup !
Merci beaucoup !
16 févr. 2016 à 20:41
Merci pour la réponse, j'ai réussi à importer le fichier texte.
Cependant, est-il possible d'exécuter cette macro à partir d'un bouton qui se trouverait simplement dans l'une des feuilles ?
Ensuite, mon fichier comporte beaucoup de texte. Je souhaiterai utiliser la fonction "Assistant importation de texte" de manière automatique. En effet, à chaque fois qu'il y a un espace, je souhaiterai que la valeur qui suit cet espace soit décalée dans la cellule de droite. Je n'arrive pas à adapter cette fonction à la suite de votre code.
17 févr. 2016 à 08:47
https://support.microsoft.com/en-us/office/assign-a-macro-to-a-form-or-a-control-button-d58edd7d-cb04-4964-bead-9c72c843a283?redirectsourcepath=%252ffr-fr%252farticle%252fajouter-un-bouton-et-lui-attribuer-une-macro-dans-une-feuille-de-calcul-adec9584-3925-47c9-998f-def71ff6a4a3&ui=en-us&rs=en-us&ad=us
17 févr. 2016 à 11:07
Merci pour la procédure mais j'avais déjà essayé cette méthode. Lorsque j'appuie sur le bouton, le programme s'éxecute mais il me met une erreur en me disant que la plage de destination doit être sur la même feuille or je souhaite mettre le boutton sur une autre feuille. Voici l'erreur:
Worksheets("PV").QueryTables.Add("TEXT;" & Fichier, [A1]).Refresh 'à adapter
Voici le lien de mon fichier:
https://www.cjoint.com/c/FBrkgiXdY75
Modifié par cs_Le Pivert le 17/02/2016 à 14:19
17 févr. 2016 à 09:20
Sinon tu peux essayer avec l'enregistreur de macro, cela fonctionne bien
@+ Le Pivert