Fonction recherche et copier/coller

Bonjour,

Actuellement, je travaille dans une société qui me demande de traiter certaines informations. J'ai du faire un tableau de 7 colonnes et à peu près 467 lignes... Mon problème est le suivant:

Je n'arrive pas à faire une recherche et dès qu'il trouve, copier/coller ce qu'il a trouver dans une autre feuille dans des cases bien précises. Prenons un exemple:

200H / ADD-200H / MR / tâches / 25-66-66 / 25 / 06-23-02
Cela représente un exemple de mes nombreuses lignes sur mes 6 colonnes. (Les slashs délimitent les différentes colonnes).

Si je me suis mal exprimer, dite-le moi pour que je vous explique en mieux mon besoin.

Cordialement, Florian.

6 réponses

  1. Contributeur
    Bonjour

    Je n'arrive pas à faire une recherche
    une recherche à partir de quelle donnée ?

    dans des cases bien précises
    lesquelles ?

    Merci de faire l'effort d'^tre précis dans vos demandes....
     Michel
    0
    1. Bonjour,

      Le critere de recherche est dans quelle colonne, il est en plusieurs position dans la colonne et il tombe du ciel ou ....?
      0
      1. Merci de me porter de l'importance à me répondre et désolé d'être imprécis mais je débute intégralement à VBA donc bon...

        J'aimerais effectuer une recherche dans tout mon tableau de 467 lignes. Une fois qu'il a trouvé la valeur "X" dans la troisième colonne, il l'a copie et l'a colle dans un autre classeur "Classeur1" (admettons pour le nom)

        J'espère que j'ai été assez clair et compris dans mes explications...
        0
        1. Bonjour,

          tout d'abord merci pour vos réponses et votre attention. Je me suis mal expliqué je vais remettre au clair mon problème:

          j'ai une base de donnée qui se présente sur 7 colonnes qui s'appellent, dans cet ordre: operation code, parent task code, task code, task, Ref, ATA, CHAP.
          Donc 7 colonnes et à peu près 500 lignes.

          J'ai mis en place une gestion de la bases de données (créer, modifier, supprimer une ligne) sous VBA.

          Je souhaite maintenant avoir la possibilité d'effectuer la copie des lignes qui ont le même "operation code" (à savoir qu'elles ne se trouvent pas forcément dans l'ordre dans la base de données) après avoir coché une checkbox (qui correspond a cette operation) et de coller ces lignes sur une feuille vierge d'excel (qui existera déjà). Il faudrait que les lignes se posent les unes après les autres dans l'ordre, à chaque fois qu'elles se collent à la dernière ligne non vide.

          voila la ligne de code que j'ai commencé a faire mais elle ne marche pas comme je voudrais:

          Dim M As Integer
          If CheckBox28.Value = True Then
          For M = 1 To 1000
          If Cells(M, "B") = "A109E-INSP-7D" Then
          Cells(M, "D").Select
          Selection.Copy
          Cells(M, "D").Select
          ActiveSheet.Paste
          End If
          Next M
          End If
          0
          1. Contributeur
            il l'a copie et l'a colle dans un autre classeur "Classeur1" (admettons pour le nom)
            Où dans la classeur1 ?

            je débute intégralement à VBA donc bon...

            ca n'a rien à voir
            quand tu as à réaliser une appli, l'erreur est de se précipiter sur l'ordi et commence à écrire des lignes ou essayer avec l'enregistreur de macro
            1° étape: analyser le problème (sur papier si compliqué)
            vieux proverbe: "un pb bien posé est à moitié résolu"
            au besoin, poser des questions sur les imprécisions

            2° étape:une fois les réponses obtenues, faire valider le système voulu par le client

            3° étape: évaluer les solutions possibles et écrire ce qui parait être la solution optimum

            tel que tu décris ton pb, je me dis que ca a été rédigé en "vite fait-mal fait" et j'ai tendance à zapper

             Michel
            -1
            1. Bonjour la communauté !

              Voici mon élément de réponse pour ton problème :

              'Dans le classeur 1
              Dim i As Integer
              i=1
              
              While x <> Range (" C " & i & "").Value
                  i = i + 1
              Wend
              
              Range("C " & i & "").EntireRow.Copy
              'Ou si j'ai bien compris comme il y a 7 colonnes ce sera plus
              Range("A" & i & " : G " & i & "").Copy
              
              Workbooks("Classeur2").Worksheets("Feuil1").Range("A69").Paste
              


              ça te va? :D
              Bien cordialement,
              Hugo
              -1
              1. Je sais pas qui est le babache qui m'a mis '-1' sans même de commentaire mais tu peux regarder ma réponse quand même ^^
                0
              2. @HugoHerbomezBonjour,

                Je sais pas qui est le babache qui m'a mis '-1'
                Moi non plus, mais la question n'est pas la.

                Vous avez teste le code que vous avez mis a dispo ?
                0
              3. Bonjour f !

                Non mais la bonne intention y est, et à peu de chose prêt il devrait fonctionner, je ne vois pas ce qu'il y a de faux dans ce que j'ai écris. Si mon code est faux, il peut s'en inspirer, si il est faux, il peut l'ignorer, si il est bon tant mieux pour lui!

                Il ne faut pas chercher à se compliquer la vie, c'est aussi simple que ça. Nous ne sommes pas dans un compte rendu d'entreprise mais dans un site Web qui permet aux internautes de s'entre-aider et je suis en train de le faire.

                Bonne journée, cette discussion est clause pour moi.

                PS : Je reproche juste à la personne m'ayant mis un '-1' de ne pas s'être expliqué, sinon je ne vois pas l'utilité. je l'aurais fait pour une personne, afin de l'aider à s'améliorer.
                0
              4. @HugoHerbomezBonjour,

                juste pour vous
                Non mais la bonne intention y est,

                testez votre code et celui-ci en ajoutant le temps d'execution pour une valeur situee ligne 450 sur 470
                Sub test()
                    'Dans le classeur 1
                    Dim lig As Long, Nb As Long
                    With Worksheets("feuil1")
                        ValX = .Range("B1")     'valeur a chercher
                        Nb = Application.CountIf(.Columns(3), ValX) 'Nombre de fois la valeur
                        If Nb > 0 Then      'si au moins 1 ok
                            lig = 2     ' ligne de depart
                            lig = .Columns.Find(ValX, .Cells(lig, 3), , xlWhole).Row    'recherche pour avoir la ligne
                            .Range("A" & lig).Resize(, 7).Copy Workbooks("Classeur2").Worksheets("Feuil1").Range("A69")     'copie
                        Else
                            MsgBox "Attention: pas trouvee " & ValX & "!"
                        End If
                    End With
                End Sub
                
                0
              5. @f894009Bonjour,

                le code est destiné à HugoHerbomez? J'ai exposé mon problème plus clairement un peu plus haut, pourriez vous m'aider s'il vous plais ?
                0