Insertion de certaines lignes de texte vers excel

Résolu/Fermé
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 - 26 déc. 2014 à 11:11
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 - 27 déc. 2014 à 15:40
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



A voir également:

5 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 déc. 2014 à 07:44
Bonjour,

Voir ceci:


http://www.cjoint.com/data3/3LBh0bsQ84g.htm
0
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 1
27 déc. 2014 à 08:23
Bonjour,
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 déc. 2014 à 08:34
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 déc. 2014 à 09:06
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/



0
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 1
27 déc. 2014 à 11:12
la macro ne supprime pas toutes les lignes indésirables, ci-joint le fichier texte
Merci

https://www.cjoint.com/c/DLBlty6whiT
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 déc. 2014 à 14:24
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

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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 déc. 2014 à 15:22
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

0
kit24be Messages postés 46 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 22 octobre 2017 1
27 déc. 2014 à 15:40
Un très grand merci, cela fonctionne très bien.
0