IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Recherche d'un mot clé dans une ligne, et si mot clé alors copier la ligne dans une autre feuille


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 25
    Points : 9
    Points
    9
    Par défaut Recherche d'un mot clé dans une ligne, et si mot clé alors copier la ligne dans une autre feuille
    Bonjour à tous,

    Ma problématique est la suivante :
    J'ai un fichier excel, contenant 2 feuilles : A et B
    J'aimerais si possible rechercher un mot clé dans la feuille A, colonne A, par exemple "motCle". Si il y a "motCle", alors Excel me copie la ligne entière et me la colle dans la feuille B.

    Je suis donc tombé sur de tonnes d'exemples en VBA, mais j'ai du mal avec tout ça : j'ai tenté de modifier un script mais sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Sub CutData()
    Dim motCle
    Dim i As Byte
    Dim C As Range
    Dim F As String
    Dim Ligne As Long
        'On définit les mots clés
        motCle = Array("motCle")
        'On effectue la recherche de chaque mot cle dans la colonne A de la sheet1 qui s appelle A
        For i = 0 To UBound(motCle)
            Do
                Set C = Worksheets("A").Columns(A).Find(motCle(i), LookIn:=xlValues, lookat:=xlPart)
                'Si le mot clé est trouvé
                If Not C Is Nothing Then
                    'On définit le nom de la feuille où sera effectuée la copie
                    F = "B" & (i + 2)
                    With Worksheets(A)
                        'On définit la ligne où sera effectué le collage
                        Ligne = .Range("A" & Rows.Count).End(xlUp).Row + 1
                        'On effectue le copier / coller
                        C.EntireRow.Copy .Range("A" & Ligne)
                    End With
                End If
            Loop While Not C Is Nothing
        Next i
    End Sub
    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Il te manque des guillemets autour du A de la colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set C = Worksheets("A").Columns("A").Find(motCle(i), LookIn:=xlValues, lookat:=xlPart)
    MPi²

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Et ici aussi
    MPi²

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Hello, merci de tes réponse :) !!

    ça ne fonctionne malheureusement pas, je pense que je me perd avec les A, qui peuvent être ou une feuille ou une colonne, si ça te dérange pas, je modifie les noms des feuilles ?
    Avec F1 et F2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Sub CutData()
    Dim motCle
    Dim i As Byte
    Dim C As Range
    Dim F As String
    Dim Ligne As Long
        'On définit les mots clés
        motCle = Array("motCle")
        'On effectue la recherche de chaque mot cle dans la colonne A de la sheet1 qui s appelle F1
        For i = 0 To UBound(motCle)
            Do
                Set C = Worksheets("F1").Columns("A").Find(motCle(i), LookIn:=xlValues, lookat:=xlPart)
                'Si le mot clé est trouvé
                If Not C Is Nothing Then
                    'On définit le nom de la feuille où sera effectuée la copie
                    F = "F2" & (i + 2)
                    With Worksheets("F2")
                        'On définit la ligne où sera effectué le collage
                        Ligne = .Range("A" & Rows.Count).End(xlUp).Row + 1
                        'On effectue le copier / coller
                        C.EntireRow.Copy .Range("F1" & Ligne)
                    End With
                End If
            Loop While Not C Is Nothing
        Next i
    End Sub
    Comme ça ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Quand Excel indique une erreur, clique Débogage pour voir sur quelle ligne apparaît celle-ci...

    F = "F2" & (i + 2)
    F va égaler "F22" au premier passage.
    Qu'est-ce que tu veux faire avec ceci ?

    C.EntireRow.Copy .Range("F1" & Ligne)
    Ici, ça ne peut pas fonctionner puisque tu copies toute la ligne et essaie de la copier en F (Excel va déclencher une erreur - tu peux l'essayer manuellement)
    De plus il y a une erreur avec le "F1 & Ligne"
    J'irais plus ainsi (sans tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C.EntireRow.Copy .Range("A" & Ligne)
    MPi²

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim MonMot as String
    MonMot = "motCle"
     
    With Worksheets("F1")
       .Row(.Range(.Cells(1,1),.Cells(.Cells(.Rows.Count,1).End(xlUp).Row,1).Find(MonMot).Row).Copy
    End With
     
    With Worksheets("F2")
       .Row(.Rows.Count).End(xlUp).Row + 1).PasteSpecial(xlPasteAll)
    End With
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. [XL-2007] Rechercher l'occurrence d'un mot situé dans un tableau sur une autre feuille (VBA).
    Par tontonTom dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/02/2015, 21h35
  2. rechercher dans une ligne et copier la colonne dans un autre document
    Par myayo001 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/03/2014, 13h11
  3. Réponses: 8
    Dernier message: 13/02/2014, 18h51
  4. Réponses: 4
    Dernier message: 15/04/2011, 17h13
  5. rechercher une date et copier la ligne dans un autre onglet
    Par ptitloup57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2009, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo