Insertion de certaines lignes de texte vers excel
Résolu
kit24be
Messages postés
46
Date d'inscription
Statut
Membre
Dernière intervention
-
kit24be Messages postés 46 Date d'inscription Statut Membre Dernière intervention -
kit24be Messages postés 46 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je voudrais insérer certaines lignes d'un fichier texte qui est trop volumineux , (plus de 1200000 lignes) vers excel exemple de ligne à récupérer :
axw22005-a3,dbg25881_numéro_serie
axw15001-a3,dop25001_quantité
axw21101-a2,dcp25844_poids
je ne dois récupérer que les lignes qui ont comme fin de référence numéro _série, quantité et poids.
Quelqu'un pourrais t' il m'aider.
Merci d' avance
je voudrais insérer certaines lignes d'un fichier texte qui est trop volumineux , (plus de 1200000 lignes) vers excel exemple de ligne à récupérer :
axw22005-a3,dbg25881_numéro_serie
axw15001-a3,dop25001_quantité
axw21101-a2,dcp25844_poids
je ne dois récupérer que les lignes qui ont comme fin de référence numéro _série, quantité et poids.
Quelqu'un pourrais t' il m'aider.
Merci d' avance
A voir également:
- Insertion de certaines lignes de texte vers excel
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Partage de photos en ligne - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
5 réponses
je ne suis pas devin, je ne connais pas ton fichier. il faut être plus explicite dans tes explications.
Avant de faire les rectifications. Il faut me donner tous les données.
Par exemple: outil1 / outil2 / outil3 etc... je ne les vois pas dans ton 1er post
Cela va être compliqué sans toutes les données.
Tu peux aussi le rectifier toi même en cherchant sur Google:
Split en vba Excel
Avant de faire les rectifications. Il faut me donner tous les données.
Par exemple: outil1 / outil2 / outil3 etc... je ne les vois pas dans ton 1er post
Cela va être compliqué sans toutes les données.
Tu peux aussi le rectifier toi même en cherchant sur Google:
Split en vba Excel
Essaie ceci:
Option Explicit Dim valeur, mot As String Dim count As Integer Private Sub CommandButton1_Click() Importer_texte End Sub Private Sub CommandButton2_Click() For_X_to_Next_Ligne End Sub Sub For_X_to_Next_Ligne() Dim FL1 As Worksheet, Cell As Range, NoCol As Integer Dim NoLig As Long Dim DernLigne As Long DernLigne = Range("A65536").End(xlUp).Row 'Instance de la feuille qui permet d'utiliser FL1 partout dans 'le code à la place du nom de la feuille Set FL1 = Worksheets("Feuil1") 'Fixe le N° de la colonne à lire NoCol = 1 'Utilisation du N° de ligne dans une boucle For ... Next For NoLig = 1 To DernLigne valeur = FL1.Cells(NoLig, NoCol) Count_Words 'nombre de mots If count > 1 Then Break_String Select Case mot Case Is = "poids" Case Is = "numéro" Case Is = "quantité" Case Else 'on supprime Rows(NoLig & ":" & NoLig).Select Selection.Delete Shift:=xlUp End Select Else 'on supprime Rows(NoLig & ":" & NoLig).Select Selection.Delete Shift:=xlUp End If Next Set FL1 = Nothing End Sub Sub Count_Words() Dim WrdArray() As String Dim text_string As String text_string = valeur WrdArray() = Split(text_string, "_") count = UBound(WrdArray()) + 1 End Sub Sub Break_String() Dim WrdArray() As String Dim text_string As String text_string = valeur WrdArray() = Split(text_string, "_") mot = WrdArray(1) End Sub 'site à consulter pour split 'http://www.exceltrick.com/formulas_macros/vba-split-function/
la macro ne supprime pas toutes les lignes indésirables, ci-joint le fichier texte
Merci
https://www.cjoint.com/c/DLBlty6whiT
Merci
https://www.cjoint.com/c/DLBlty6whiT
voilà, avec le fichier c'est plus facile. Les données s'inscrivent dans la colonne B .
Il y a juste les quantité qui ne sont pas différenciées
Le problème avec split, c'est qu'il sortait:
poids , 1.52769
au lieu de poids
ce qui m'a fait mettre les 5 premier caractères
pour quantité cela prend toutes les quantités 1,2,3,4 etc.
J'espère que tu as compris!
Il y a juste les quantité qui ne sont pas différenciées
Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Dim valeur, mot As String Dim count As Integer Private Sub CommandButton1_Click() Importer_texte End Sub Private Sub CommandButton2_Click() For_X_to_Next_Ligne End Sub Sub For_X_to_Next_Ligne() Dim FL1 As Worksheet, Cell As Range, NoCol As Integer Dim NoLig As Long Dim DernLigne As Long DernLigne = Range("A65536").End(xlUp).Row 'Instance de la feuille qui permet d'utiliser FL1 partout dans 'le code à la place du nom de la feuille Set FL1 = Worksheets("Feuil1") 'Fixe le N° de la colonne à lire NoCol = 1 'Utilisation du N° de ligne dans une boucle For ... Next For NoLig = 1 To DernLigne valeur = FL1.Cells(NoLig, NoCol) Count_Words 'nombre de mots If count > 1 Then Break_String mot = Left(mot, 5) '5 premier caractères Select Case mot Case Is = "numér" Range("A" & NoLig).Select Selection.Copy ActiveCell.Offset(0, 1).Select 'sélection cellule colonne B(0 meme ligne , 1 colonne suivante) ActiveSheet.Paste Case Is = "quant" Range("A" & NoLig).Select Selection.Copy ActiveCell.Offset(0, 1).Select 'sélection cellule colonne B(0 meme ligne , 1 colonne suivante) ActiveSheet.Paste Case Is = "poids" Range("A" & NoLig).Select Selection.Copy ActiveCell.Offset(0, 1).Select 'sélection cellule colonne B(0 meme ligne , 1 colonne suivante) ActiveSheet.Paste End Select End If Next Set FL1 = Nothing End Sub Sub Count_Words() Dim WrdArray() As String Dim text_string As String text_string = valeur WrdArray() = Split(text_string, "_") count = UBound(WrdArray()) + 1 End Sub Sub Break_String() Dim WrdArray() As String Dim text_string As String text_string = valeur WrdArray() = Split(text_string, "_") mot = WrdArray(1) End Sub 'http://www.exceltrick.com/formulas_macros/vba-split-function/
Le problème avec split, c'est qu'il sortait:
poids , 1.52769
au lieu de poids
ce qui m'a fait mettre les 5 premier caractères
pour quantité cela prend toutes les quantités 1,2,3,4 etc.
J'espère que tu as compris!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et pour ne garder que les données dans la colonne A, mettre ceci:
Sub Supprime_lignes_vides() Dim I As Long For I = ActiveSheet.UsedRange.Rows.count To 1 Step -1 If Application.CountA(Rows(I)) = 1 Then Rows(I).Delete 'colonne B Next I Columns("A:A").Delete Shift:=xlToLeft 'colonne A Worksheets("Feuil1").Range("A:A").Columns.AutoFit End Sub Private Sub CommandButton3_Click() Supprime_lignes_vides End Sub
merci pour la réponse. le programme est rapide mais il ne me sélectionne pas uniquement les références:
numéro_serie / quantité / poids
les autres lignes ne doivent pas êtres récupérées ex: quantité1 / quantité2 / poids1 / poids2 / outil1 / outil2 / outil3 etc...
Merci