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 8400 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:".

6 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
     
    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
  2. antipolis a Messages postés 17152 Statut Membre 2 917
     
    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
  3. 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
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
       
      De rien, au plaisir de te relire sur le forum.

      Patrice
      PS : Peux-tu passer le post en résolu ?
      0
  4. antipolis a Messages postés 17152 Statut Membre 2 917
     
    C'est sympa de nous donner des nouvelles.

    Content d'avoir pu vous aider.

    Un bon 14 juillet.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. MrQuant Messages postés 56 Statut Membre 1
     
    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
    1. antipolis a Messages postés 17152 Statut Membre 2 917
       
      Toutes mes excuses.

      Je n'avais pas vu le "PS" en fin du message.
      0
  7. antipolis a Messages postés 17152 Statut Membre 2 917
     
    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