Excel/macro Rechercher puis copier dans une autre feuille

Fermé
Omelli Messages postés 6 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 7 juin 2013 - 6 juin 2013 à 16:58
Omelli Messages postés 6 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 7 juin 2013 - 7 juin 2013 à 14:02
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 ?

A voir également:

6 réponses

rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
7 juin 2013 à 11:14
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
Omelli Messages postés 6 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 7 juin 2013 1
7 juin 2013 à 11:42
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
7 juin 2013 à 11:58
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 7/06/2013 à 12:18
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
Omelli Messages postés 6 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 7 juin 2013 1
Modifié par Omelli le 7/06/2013 à 14:09
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
6 juin 2013 à 17:30
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
7 juin 2013 à 08:24
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

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

Posez votre question
Omelli Messages postés 6 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 7 juin 2013 1
7 juin 2013 à 09:45
Bonjour,

Voici ma pièce jointe : https://www.cjoint.com/?0FhjRKQZLG7

J'ai détaillé mon explication dans la feuille 2, en espérant que c'est compréhensible.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
7 juin 2013 à 11:08
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
Omelli Messages postés 6 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 7 juin 2013 1
7 juin 2013 à 11:36
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