Excel VBA copie de lignes sous conditions

Résolu/Fermé
zgrulb Messages postés 25 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 25 mai 2018 - Modifié par zgrulb le 13/07/2011 à 17:46
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 14 juil. 2011 à 17:45
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
13 juil. 2011 à 22:37
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 mercredi 5 novembre 2008 Statut Membre Dernière intervention 12 novembre 2014 2 859
Modifié par antipolis a le 13/07/2011 à 21:25
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 25 mai 2018 4
14 juil. 2011 à 10:13
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
14 juil. 2011 à 17:45
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 mercredi 5 novembre 2008 Statut Membre Dernière intervention 12 novembre 2014 2 859
14 juil. 2011 à 11:00
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 mardi 3 juin 2008 Statut Membre Dernière intervention 3 septembre 2012 1
13 juil. 2011 à 18:24
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 mercredi 5 novembre 2008 Statut Membre Dernière intervention 12 novembre 2014 2 859
13 juil. 2011 à 21:30
Toutes mes excuses.

Je n'avais pas vu le "PS" en fin du message.
0
antipolis a Messages postés 15609 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 12 novembre 2014 2 859
Modifié par antipolis a le 13/07/2011 à 20:18
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