Macro Copier/Recherche/Copier ligne/Coller

Bonjour,

Je vous écris aujourd'hui car j'ai quelques problèmes avec un macro VBA,

Je m'explique j'aurais aimé compléter un tableau avec une sorte de présélection. Toutes les informations nécessaires se situent sur une feuille et les information à compléter sur une autre, le macro devrait simplement en reconnaissant les noms compléter l'ensemble de la ligne correspondante.

Si on prend dans mon fichier la feuil2 c'est celle qui contient les informations, et la Feuil1 serait la feuille à compléter à partir de la feuille 2. Seul le nom est renseigné & donc il faudrait que ca complète le reste.

Sub Test()

Dim nomdate As String

Sheets("Feuil1").Select

Range("C2", Range("C2").End(xlDown)).Select

Dim Cel As Range

For Each Cel In Range("C2", Range("C2").End(xlDown))

Selection.Copy

Sheets("Feuil2").Select

Set resultat = ActiveSheet.Columns(3).Cells.Find(What:=Cel.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _

False, SearchFormat:=False)

If resultat Is Nothing Then

MsgBox " non trouvé"

Else

resultat.Select

End If

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlToRight)).Select

Application.CutCopyMode = False

Selection.Copy

Application.CutCopyMode = False

Selection.Copy

Sheets("Feuil1").Select

ActiveSheet.Paste

Next Cel

End Sub

Le code est faux et me met une erreur d'excution'13': Incompatibilité de type.

Merci d'avance pour votre aide,

Cordialement,

LaSouried

39test.xlsx (10.42 Ko)
45test.xlsx (10.42 Ko)

Bonjour,

Voici un code qui devrait te convenir (à mettre dans la feuille 1):

Private Sub Worksheet_Change(ByVal Target As Range) 'Dès que la feuille 1 change la macro se déclenche

Dim PosRechY As String

    If Target.Column = 2 Then 'On se concentre sur la colonne B
    On Error GoTo 50 'Si il y à une erreur le programme va vers le repère 50
        PosRechY = Sheets("Feuil2").Range("B2:B999").Find(Target.Value, , xlValues).Row 'Renvoit la ligne où le nom rentré est trouvé en feuille 2
        Sheets("Feuil2").Range("A" & PosRechY, "O" & PosRechY).Copy Destination:=Sheets("Feuil1").Range("A" & Target.Row)
        'On copie de A à O qui se situe sur la même ligne que le nom trouvé et on la colle sur la ligne sélectionnée
    End If
50     MsgBox "Non trouvé" 'Repère 50
End Sub

Je te conseille de créer une liste pour la colonne B de la feuille 1 cela évite de faire des erreurs de frappe

J'espère t'avoir aidé

Rebonjour,

Il s'avère que je n'arrive pas à mettre la macro dans mon fichier cela me met une erreur,

Je débute en VBA.

Pouvez-vous m'aider ?

Cordialement,

LaSourisD.

Re,

Tu double clique sur la feuille 1 (Voir image en dessous) et tu y colle le code.

ouvrir code

Si tu as encore un message d'erreur fait une capture d'écran

Rebonjour,

Une fois que j'ai mi le code je ne sais pas le faire fonctionner,

Pouvez-vous m'aider ?

Cordialement,

LaSourisD.

sans titre

Re,

Une fois le code copier, tu enregistres et tu fermes VBA.

Ensuite tu as juste à remplir (dans ton fichier EXCEL) la colonne B et la macro fait le reste.

Rebonjour, Après avoir testé ta macro il me marque "Non trouvé" à chaque fois.

Je ne comprends pas d'où vient le problème ...

Merci d'avance pour l'aide,

Cordialement,

LaSourisD.

Re,

C'est une erreur de ma part désolé

Remplace le code par celui là :

Private Sub Worksheet_Change(ByVal Target As Range) 'Dès que la feuille 1 change la macro se déclenche

Dim PosRechY As String

    If Target.Column = 2 Then 'On se concentre sur la colonne B
    On Error GoTo 50 'Si il y à une erreur le programme va vers le repère 50
        PosRechY = Sheets("Feuil2").Range("B2:B999").Find(Target.Value, , xlValues).Row 'Renvoit la ligne où le nom rentré est trouvé en feuille 2
        Sheets("Feuil2").Range("A" & PosRechY, "O" & PosRechY).Copy Destination:=Sheets("Feuil1").Range("A" & Target.Row)
        'On copie de A à O qui se situe sur la même ligne que le nom trouvé et on la colle sur la ligne sélectionnée
    End If
    GoTo 100
50     MsgBox "Non trouvé" 'Repère 50
100
End Sub

Bonjour,

J'ai tappé d'une part "Toto" en B2 Feuil1 ca me fait "Non trouvé" Puis j'ai tappé "Heros" Ca me met egalement non trouvé.

Cordialement,

LaSourisD.


Suite à compréhension du code j'ai compris d'où venait mon erreur,

Je vous remercie énormément pour l'aide apporté c'était exactement ce qu'il me fallait !

Passez une bonne journée,

Cordialement,

LaSourisD.

Rechercher des sujets similaires à "macro copier recherche ligne coller"