Excel recherche et copie d une ligne

Résolu
bonjour et merci d avance

je souhaiterai dans un tableau excel créer une macro afin de chercher un mot dans une colonne et copier ensuite toute la ligne dans un onglet diffférent .
Après les divers essais que j ai fait j arrive bien à selectionner la cellule copmrenant le mot dans la colonne mais j arrive pas à étendre la sélection à la ligne .

Merci d avance de votre aide

9 réponses

  1. ;-)
    Dim MotCherche, L, C, InL, InC, OutL
    Dim Origine, Destination
    Set Origine = Workbooks(1).Sheets(1)
    Set Destination = Workbooks(1).Sheets(2)
    MotCherche = "un truc"
    InL = Origine.ActiveCell.SpecialCells(xlCellTypeLastCell).Row
    InC = Destination.ActiveCell.SpecialCells(xlCellTypeLastCell).Column
    OutL = Destination.ActiveCell.SpecialCells(xlCellTypeLastCell).Row
    For L = 1 To InL
      If Origine.Cells(L, 1).Value = MotCherché Then
        For C = 1 To InC
          Destination.Cells(OutL, C).Value = Origine.Cells(L, C).Value
          OutL = OutL + 1
          Next
        End If
      Next
    


    Un petit exemple... Sachant que la variable MotCherché contient ce que tu cherches, et que la colonne à explucher est la colonne 1, que le classeur d'origine est le premier classeur ouvert et la feuille d'origine est la première feuille, la feuille destination est la 2 ème feuille du classeur 1... tu n'as plus qu'a remplacer avec tes données à toi, et extrapoler...

    ;-)
    8
    1. ;-( J'ai fait une petite erreur : En relisant, tu auras compris que InC doit pointer sur Origine, pas sur Destination.... Désolé...
      0
    2. @WhiteFang;-( T'in, encore une autre !! : Tu vires OutL de la boucle, tu met après next... Fatigué...
      0
    3. @WhiteFangBonjour,

      J'ai essayé le code mais

      Lorsque la commande arrive à :

      InL = Origine.ActiveCell.SpecialCells(xlCellTypeLastCell).Row
      InC = Origine.ActiveCell.SpecialCells(xlCellTypeLastCell).Colu­mn
      OutL = Destination.ActiveCell.SpecialCells(xlCellTypeLastCell).Row

      j'obtiens le message d'erreur:
      "Erreur d'éxécution '438': Propriété ou méthode non gérée par cet objet

      Pouvez-vous m'apporter votre aide SVP?
      0
    4. comment a tu débogué ?
      0
    5. Vous Remplacez ActiveCell par Cells
      0
  2. merci à tous mais j ai solutionné mon problème .
    il me faut maintenant
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 30/08/2005 par GuimarEm

    Dim tableau(50), i, j, k

    i = 2
    j = 0

    While i < 50
    If Workbooks("xx").Sheets("Feuil1").Cells(8, i) = "x" Then
    tableau(j) = Workbooks("xx.xls").Sheets("Feuil1").Cells(7, i)
    j = j + 1
    End If
    i = i + 1
    Wend

    k = 5
    j = 0
    While tableau(j) <> ""
    i = 2
    While i < 1000
    While Workbooks("xx.xls").Sheets("maxcase").Cells(i, 35) <> tableau(j) And i < 1000
    i = i + 1
    Wend
    Workbooks("xx.xls").Sheets("maxcase").Rows(i).Copy
    Sheets("tableau").Select
    Rows(k).Select
    ActiveSheet.Paste
    k = k + 1
    i = i + 1
    Wend
    j = j + 1
    Wend

    End Sub

    voici mon programme toute fois un problème subsiste dans la ligne

    While Workbooks("xx.xls").Sheets("maxcase").Cells(i, 35) <> tableau(j) And i < 1000

    car tout va bien quand il y a que la chaine de caratere spécifié mais quand il y a la chaiine de caractère plus une autre chaine dans la meme cellule il bne veut pas prendre la cellule alors que je voudrai
    Connaissez vous l opérateur permettant de le lui dire
    3
    1. merci à tous pour votre aide .
      Pour faire comprendre le prog que j ai fait qui a un peu changé depuis je vais m expliquer un peu mieux.
      le fichier excel contient 3 onglets le premier contient un tableau avec des cases à cocher representant des options . le deuxième contient l intitulé du tableau et le 3 toutes les données en fonction des otpions . donc le porg vise après avoir coché les options on lance le prog et il va remplir le tableau de la 2 feuille en fonction des options et des données de la troisième feuille.
      En tout cas je vous remercie tous beaucoup
      2
      1. Pour selectionner la ligne complete de la cellule A2 par exemple:

        Sub SelectionLigne()
        Range("A2").EntireRow.Select
        End Sub

        Voila j'espere que c'est ce que tu voulais.
        ciao
        0
        1. ;-) Et en plus court : Rows(1).Select...
          0
      2. ;-)

        Cela me paraît énorme, en lignes, par rapport au problème...

        Une question : Comment et où est défini le mot à rechercher, pour la copie ?

        ;-)
        0
        1. bonjour,
          peut tu afficher ta macro ?
          stp
          0
          1. J'ai 4 colonnes. La premier contient un numéro, la deuxieme une liste, la troisieme un numéro la quatrième une liste.
            Je souhaite inscrire dans une cinquième colonne le numéro de la colonne 1 dont le champs de la colonne 2 est identique à celui de la colonne 4 et ceci sur la ligne du champs de la colonne 4
            Merci
            0
            1. Bonjour,

              Je me suis inspiré de la macro de WhiteFAng pour écrire la macro ci-dessous...

              L'objectif est de copier le contenu de 2 cellules de la feuille source vers 2 cellules de la feuille cible pour toute les lignes dont la valeur REFERENCE sont identiques:

              Mais l'execution plante avec le msg suivant : Objet Requis
              Je ne vois pas quel objet n'est pas déclaré ... Une idée ?
              Merci Beaucoup

              Sub MAJ()
              '
              ' Macro MAJ Mise à Jour Stock
              '
              Dim Reference, Cref, Quantite, Cqua, Unitaire, Cuni, L, LMIN, LMAX
              Dim Source, Cible
              Set Source = Workbooks("Stock2008").Sheets("Saisie")
              Set Cible = Workbooks("Stock2008").Sheets("Stocks")
              Set LMIN = 4
              Set LMAX = 403
              Set Cref = 2
              Set Cqua = 4
              Set Cuni = 6
              Reference = Source.Range("A3:B3").Select
              For L = LMIN To LMAX
              If Cible.Cells(L, Cref).Value = Reference Then
              Quantite = Source.Range("D14:D14").Select
              Cible.Cells(L, Cqua).Value = Quantite
              Unitaire = Source.Range("F14:F14").Select
              Cible.Cells(L, Cuni).Value = Unitaire
              Next
              End If
              End Sub
              0
              1. Bonjour,

                Dans le même ordre d'idées:

                voici mon tableau:

                Intitulé Nom Prenom
                dn: Lecoq,OU=utilisateur,OU=Test,DC=fr,DC=machin,DC=local CN=Yves
                changetype: add
                objectClass: top
                objectClass: person
                objectClass: organizationalPerson
                objectClass: user
                cn: Lecoq Yves
                displayName: Lecoq Yves
                sAMAccountName: ylecoq

                dn: Coluche,OU=utilisateur,OU=Test,DC=fr,DC=machin,DC=local CN=Michel
                changetype: add
                objectClass: top
                objectClass: person
                objectClass: organizationalPerson
                objectClass: user
                cn: Coluche Michel
                displayName: Coluche Michel
                sAMAccountName: mcoluche

                changetype: add
                sAMAccountName: ajoly
                cn: Joly Angelina
                displayName: Joly Angelina
                dn: Joly,OU=utilisateur,OU=Test,DC=fr,DC=machin,DC=local CN=Angelina
                objectClass: organizationalPerson
                objectClass: person
                objectClass: top
                objectClass: user

                dn: Ricard,OU=utilisateur,OU=Test,DC=fr,DC=machin,DC=local CN=Paul
                changetype: add
                objectClass: top
                objectClass: person
                objectClass: organizationalPerson
                objectClass: user
                cn: Ricard Paul
                displayName: Ricard Paul
                sAMAccountName: pricard

                Je souhaite recuperer de la colonne 1 le sAMAccountName: et le contenu se situant dans la colonne 3
                ainsi que le displayName et le contenu se situant en colonne 2 et 3

                Pour mettre ceci dans une autre feuille, et les regrouper:
                du style:
                samaccountname: pricard
                CN: ricard paul

                J'espère avoir été assez explicite.
                Merci pour toutes aides.
                0