Excel VBA copie de lignes sous conditions

Résolu
zgrulb Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai besoin de trier un fichier Excel pour pouvoir l'exploiter.

Une ligne sur trois, la première cellule (A) commance par "GJ:", "KD:" ou "OD:".
Ce sont les lignes dont j'ai besoin; les autres non.

Les trois premiers caractères "GJ:", "KD:" ou "OD:" sont suivis de chiffres qui me sont utiles mais pas pour la commande. Cela donne par exemple "GJ:254348641".

Ce que j'aimerais faire c'est sélectionner les lignes et les copier sur une autre feuille. Ensuite je pourrais les trier et les exploiter tranquilement.

Quel macro je dois créer pour ce faire?

Merci d'avance pour votre aide.


ps : on pourrait aussi tout simplement supprimer les lignes dont la première cellule (A) ne commence ni par "GJ:", "KD:" ou "OD:".

A voir également:

6 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

J'aurais écris ceci :
Option Explicit
Sub Chercher_Copier()
Dim cel As Range
Dim Maligne As Long

  Maligne = 5
  With Worksheets("Feuil1")
    For Each cel In Intersect(.UsedRange, .Columns(1))
      If Left(cel.Value, 3) = "GJ:" Or Left(cel.Value, 3) = "KD:" Or Left(cel.Value, 3) = "OD:" Then
        cel.EntireRow.Copy Destination:=Worksheets("recuperation").Cells(Maligne, 1)
        Maligne = Maligne + 1
      End If
    Next cel
  End With
  Worksheets("recuperation").Range("E2").Value = Maligne - 5 & " lignes récupérée(s)"

End Sub
    

2
antipolis a Messages postés 15609 Date d'inscription   Statut Membre Dernière intervention   2 859
 
Bonjour.

Les enregistrements trouvés selon vos critères dans feuil1 sont copiés dans la feuille "recuperation".

Vous trouverez un classeur EXCEL ici :
http://www.cijoint.fr/cjlink.php?file=cj201107/cijpIgLwpT.xls
0
zgrulb Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   4
 
Un très grand merci à tous les gars.
Ca marche super bien et ça me fait économiser un temps précieux.
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
De rien, au plaisir de te relire sur le forum.

Patrice
PS : Peux-tu passer le post en résolu ?
0
antipolis a Messages postés 15609 Date d'inscription   Statut Membre Dernière intervention   2 859
 
C'est sympa de nous donner des nouvelles.

Content d'avoir pu vous aider.

Un bon 14 juillet.
0

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

Posez votre question
MrQuant Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

met ce bout de code dans une boucle FOR ou FOR EACH et ca devrait marcher

    If Left(Cellule, 2) <> "GJ" And Left(Cellule, 2) <> "KD" And Left(Cellule, 2) <> "OD" Then
       Cellule.EntireRow.Delete
    End If


cheers
-1
antipolis a Messages postés 15609 Date d'inscription   Statut Membre Dernière intervention   2 859
 
Toutes mes excuses.

Je n'avais pas vu le "PS" en fin du message.
0
antipolis a Messages postés 15609 Date d'inscription   Statut Membre Dernière intervention   2 859
 
Bonjour.

Ce n'est pas bon.

ATTENTION DANGER : cette macro va supprimer les lignes qui ne correspondent pas à ses conditions.

Ce n'est pas ce que demande "zgrulb".
-1