Excel recherche et copie d une ligne

Résolu
manu2183 -  
 Kardej -
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. WhiteFang Messages postés 2063 Statut Membre 204
     
    ;-)
    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. WhiteFang Messages postés 2063 Statut Membre 204
       
      ;-( J'ai fait une petite erreur : En relisant, tu auras compris que InC doit pointer sur Origine, pas sur Destination.... Désolé...
      0
      1. WhiteFang Messages postés 2063 Statut Membre 204 > WhiteFang Messages postés 2063 Statut Membre
         
        ;-( T'in, encore une autre !! : Tu vires OutL de la boucle, tu met après next... Fatigué...
        0
      2. Georges_R > WhiteFang Messages postés 2063 Statut Membre
         
        Bonjour,

        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
    2. caroline
       
      comment a tu débogué ?
      0
    3. Kardej
       
      Vous Remplacez ActiveCell par Cells
      0
  2. manu2183
     
    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
  3. manu2183
     
    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
  4. teleteube Messages postés 4 Statut Membre 3
     
    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. WhiteFang Messages postés 2063 Statut Membre 204
       
      ;-) Et en plus court : Rows(1).Select...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. WhiteFang Messages postés 2063 Statut Membre 204
     
    ;-)

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

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

    ;-)
    0
  7. scorp57
     
    bonjour,
    peut tu afficher ta macro ?
    stp
    0
  8. DELEGUE
     
    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
  9. fabanice
     
    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
  10. noxyde
     
    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