Excel VBA copie de lignes sous conditions [Résolu/Fermé]

Signaler
Messages postés
25
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
25 mai 2018
-
Messages postés
8221
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
31 octobre 2020
-
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

Messages postés
8221
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
31 octobre 2020
1 501
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
15469
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
12 novembre 2014
2 513
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
Messages postés
25
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
25 mai 2018
3
Un très grand merci à tous les gars.
Ca marche super bien et ça me fait économiser un temps précieux.
Messages postés
8221
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
31 octobre 2020
1 501
De rien, au plaisir de te relire sur le forum.

Patrice
PS : Peux-tu passer le post en résolu ?
Messages postés
15469
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
12 novembre 2014
2 513
C'est sympa de nous donner des nouvelles.

Content d'avoir pu vous aider.

Un bon 14 juillet.
Messages postés
45
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
3 septembre 2012
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
Messages postés
15469
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
12 novembre 2014
2 513
Toutes mes excuses.

Je n'avais pas vu le "PS" en fin du message.
Messages postés
15469
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
12 novembre 2014
2 513
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".