Excel/macro Rechercher puis copier dans une autre feuille

Omelli Messages postés 8 Statut Membre -  
Omelli Messages postés 8 Statut Membre -
Bonjour,

Je voudrais créer une macro qui, dans une première feuille (de 2 colonnes par exemple), rechercherait une valeur, puis la sélectionnerait et la copierait vers une deuxième feuille.
Mais aussi que la macro sélectionne la valeur (qui n'est jamais la même) qui se trouve
sur la même ligne que la valeur recherchée, dans la colonne à côté et la copie/colle dans cette deuxième feuille.

Je suis débutante en VBA, j'ai tâtonné avec l'enregistreur de macro, puis avec les codes
proposés sur les forums pour résoudre des soucis similaires aux miens, mais je n'y arrive
toujours pas.

Sauriez-vous à à quoi pourrait ressembler ce code ?

6 réponses

  1. rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
     
    Tu peux aussi faire cette macro :-)

    Sub WriteAction()

    Application.ScreenUpdating = False

    Set ma_feuille = ThisWorkbook.Sheets(1)
    col_no = 3 'C
    lg_no = 2 '2
    flag_trouve = False

    Do While Not IsEmpty(ma_feuille.Cells(lg_no, col_no))
    If (ma_feuille.Cells(lg_no, col_no).Value = "Départ du cross") Then
    Sheets(2).Range("A1000").End(xlUp)(2) = ma_feuille.Range("B" & lg_no).Value
    ma_feuille.Range("C" & lg_no).Copy Sheets(2).Range("B1000").End(xlUp)(2)
    flag_trouve = True
    Exit Do
    End If
    lg_no = lg_no + 1
    Loop
    If (flag_trouve = False) Then
    MsgBox (strName & " :" & "Non trouvé !")
    End If

    Application.ScreenUpdating = True

    End Sub
    5
    1. Omelli Messages postés 8 Statut Membre 1
       
      Merci beaucoup ! Par contre au lancement de la macro, une erreur "Compile error, variable not defined apparaît", je ne vois pas comment résoudre le problème (eh oui je suis un gros boulet en VBA)
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Je cherche dans la feuille 1 l'action "Départ du cross", or je ne connais pas le numéro de colonne ou de cellule dans lesquelles elle se trouve. Alors la macro recherche cette action dans la feuille, la sélectionne et la copie dans la colonne Action de la feuille 2.

      C'est colonne ou ligne ou ailleurs car ca ne correspond pas à ta pièces jointe....
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      si "départ du cross" est "ailleurs" dans la feuil1 et que tu retrancris uniquement "départ du cross"
      et que tu retranscris toujours en B2 l'action et en A2 l'heure
      Option Explicit
      
      Sub retrancrire()
      Dim cellule As Range, heure As Date
      
      With Sheets(1)
           Set cellule = .Cells.Find("Départ du cross")
           heure = cellule.Offset(0, -1)
      End With
      
      With Sheets(2)
           .Range("B2") = cellule
           .Range("A2") = heure
           .Range("A2").NumberFormat = "[h]:mm:ss;@"
      End With
      
      End Sub
      
      0
  2. Omelli Messages postés 8 Statut Membre 1
     
    C'est bon ! Ca marche ! Le code de rEVOLV3r marche très bien !
    Il suffisait juste que je définisse les variables avec Dim ... As :)

    Je continue de chercher pour copier la cellule à côté.

    Je vais réessayer avec le code de michel_m maintenant.
    1
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    pour être efficace:

    combien de lignes
    type des valeurs: nombre, texte ,

    ou mieux si possible:
    mettre le classeur sans données confidentielles en pièce jointe sur
    https://www.cjoint.com/
    puis copier l'adresse du lien et la coller dans le message de réponse

    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Ton pb se résout par formule mais
    comme Je comprend mal ce que tu veux faire, alors j'ai pris le cas général avec une macro paramétrée: tu choisis une action et elle copiée dans la première ligne vide de la feuille avec à gauche l'heure

    Option Explicit
    
    Sub trancrire_action()
         ecrire "Départ du cross"
    End Sub
    '---------------------
    Sub ecrire(texto)
    Dim Ligne  As Integer, Heure As Date, Ligvide As Integer
    With Sheets(1)
         Ligne = .Columns("C").Find(texto, .Range("C1"), xlValues).Row
         Heure = .Cells(Ligne, "B")
    End With
    With Sheets(2)
         Ligvide = .Columns("B").Find("", .Range("B1")).Row
         .Cells(Ligvide, "B") = texto
         .Cells(Ligvide, "A") = Heure
         .Cells(Ligvide, "A").NumberFormat = "h:mm:ss;@"
    End With
    End Sub
    


    0
    1. Omelli Messages postés 8 Statut Membre 1
       
      Merci pour votre aide Michel, je vais essayer le code.
      Si ça peut vous aider, je peux essayer de reformuler mon problème :
      Je cherche dans la feuille 1 l'action "Départ du cross", or je ne connais pas le numéro de colonne ou de cellule dans lesquelles elle se trouve. Alors la macro recherche cette action dans la feuille, la sélectionne et la copie dans la colonne Action de la feuille 2.
      Mais j'ai également besoin qu'elle copie le temps correspondant à l'action "Depart du cross", mais je sais que la colonne Action est toujours à droite de la colonne Temps. Donc la macro sélectionnerait la cellule à gauche de la cellule "depart du cross" et la copie/colle aussi dans la feuille 2, dans la colonne Temps...

      Désolée de ne pas pouvoir être plus claire
      0