Routine vba excel rechercher cell et copier ?

Résolu/Fermé
echo11 - 25 janv. 2009 à 09:31
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 26 janv. 2009 à 22:39
Bonjour à tous,

Je cherche à créer une procédure sub qui permet de sélectionner dans une feuille excel une cellule en fonction de son contenu (le nom qu'elle contient) puis qui copie cette cellule ainsi que les 2 cellules qui se trouvent à sa droite dans une autre feuille excel. Cette procédure permettrait de faire à la suite la même opération pour une deuxième cellule, puis une troisième etc ...
J'ai essayé avec une structure If-Then mais je n'ai pas réussi.
J'ai consulté ma documentation VBA et quelques forums mais sans succès. Pourtant il semble que pas mal de gens cherchent à faire ce type de traitement de données très simples, un tri de données en fait.
Quelqu'un peut-il m'aider ? merci d'avoir lu !

echo
A voir également:

6 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
26 janv. 2009 à 22:39
bonsoir

Bonne continuation, bon courage et peut-être à bientôt pour une autre question.
1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 janv. 2009 à 10:41
Bonjour,
Ce que tu essaye d'expliquer n'a rien à voir avec un tri.
Dans quel plage tu veux rechercher et à quel endroit tu veux copier.
A+
0
je réponds à ta question

en fait les données se trouvent sur une plage (A1:C40) dans la feuille "import"

sur (A1:A40) se trouvent les noms de 40 sociétés (CAC 40 ...)

sur (B1:B40) se trouvent les cours de clôture

sur (C1:C40) se trouvent les variations de cours

j'aimerais que la procédure sélectionne 7 valeurs qui m'intéressent (dont je connais les noms : N1, N2, N3, N4, N5, N6, N7)

et qu'elle exécute la copie des 7 lignes sélectionnées sur une deuxième feuille "ptf".

Voilà j'aurais dû commencer par là, enfin j'espère que tu vois mieux maintenant :-)

à+
echo
0
echo11 > echo11
25 janv. 2009 à 12:11
une précision : les 7 noms N1, N2, ..., N7 apparaissent tel quel dans la plage (A1:A40)

à+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 janv. 2009 à 12:07
Oui, la recherche se ferrait donc sur la colonne A.
Reste une question Comment tu sélectionne les 7 noms ?
0
désolé je n'avais pas vu ton dernier message quand j'apportais la précision sur les noms

pour répondre à ta question :

sauf erreur de ma part, il faudrait que le code de la procédure recherche N1 dans (A1:A40), N1 est le contenu d'une des 40 cellules de la plage. S'il le trouve par exemple à A7, il copie (A7:C7) dans la feuille PTF à partir de A1 (donc sur la plage (A1:C1) de la feuille PTF). Ensuite il recherche N2, il le trouve à A15 par exemple et copie (A15:C15) dans la feuille PTF une ligne en dessous de la copie précédente effectuée de (A7:C7)

J'espère que j'ai répondu à ta question.
merci d'avance

à+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > echo11
25 janv. 2009 à 12:29
Non... OU sont les 7 noms à rechercher pour faire une comparaison, faut bien que ces noms soit écrit à 2 emplacement différent pour les rechercher ???
Excel n'a pas encore une fonction pour la transmission de pensée !! :-)
Et moi pas de boule de cristal :-)
Tu a quelque connaissance en VBA ?
0
echo11 > lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020
25 janv. 2009 à 12:39
voici :

N1 est en A7 (le contenu de A7 est N1)
N2 est en A15
N3 est en A18
N4 est en A22
N5 est en A24
N6 est en A30
N7 est en A35

mais il se peut que la semaine prochaine quand je vais importer à nouveau ces 40 valeurs sur la feuille import,
N1 ne soit plus en A7 mais en A9 par exemple. La macro devrait pouvoir continuer à marcher.

comme tu l'as compris je débute en VBA, j'ai déjà étudié quelques procédures simples.
à+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > echo11
25 janv. 2009 à 12:47
je commence seulement à comprendre ! N1,N2... sont les noms ? et sont toujours les mêmes.
J'ai penser que N1 était des exemples et pas le nom réel.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 janv. 2009 à 12:44
Un exemple pour le transfert.
https://www.cjoint.com/?bBmSbwtGWM
A+
0
j'ai bien regardé le code, mais je dois l'avoir mal copié où pas au bon endroit ...

je joins le fichier qui donne le résultat que je voudrais obtenir après exécution de la macro
sur la feuille "ptf" (avant exécution on a la feuille "ptf" est vide)

pour le cas où tu voudrais encore regarder ...

https://www.cjoint.com/?bBpawfTeXf

merci de toute façon
0
excuse-moi je me suis aperçu que je devais te donner les vrais noms des valeurs qui sont des noms propres et non pas N1, N2, ..., N7 , pour qu'il n'y ai pas de confusion ...

donc dernière modification voici le lien :

https://www.cjoint.com/?bBpEbagvnl

à+
0

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

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 janv. 2009 à 13:10
Bon, cette fois j'ai tout compris :)

dans ta feuille "ptf". tu écrit dans...
Dans A4 > N1
A5 > N2
A6 > N3
.....
A10 > N7
Dans un modume général tu copie la macro...
Sub Transfert()
Dim Lig As Long
Dim FinLig As Long
Dim i As Long
Dim FL1 As Worksheet
    Set FL1 = Sheets("Feuil1") 'Adapter le nom des feuilles
    FinLig = FL1.Range("A65536").End(xlUp).Row
    For Lig = 4 To 10
        For i = 1 To FinLig
            If FL1.Cells(i, 1) = Cells(Lig, 1) Then
            Cells(Lig, 2) = FL1.Cells(i, 2)
            Cells(Lig, 3) = FL1.Cells(i, 3)
            Exit For
            End If
        Next i
    Next Lig
End Sub


sur la feuille "ptf". tu colle un bouton
dans le code de la feuille tu colle
Private Sub CommandButton1_Click()
    Transfert
End Sub

Oublie pas de changer Feuil1 au nom de la feuille de base.
Tu dis...
0
excuse-moi je me suis aperçu que je devais te donner les vrais noms des valeurs qui sont des noms propres et non pas N1, N2, ..., N7 , pour qu'il n'y ai pas de confusion ...

donc dernière modification voici le lien :

https://www.cjoint.com/?bBpEbagvnl

en résumé, la macro doit aller chercher dans la feuille "import" la cellule AXA puis copier cette cellule et celle qui se trouve à sa droite puis aller chercher la cellule CARREFOUR et copier celle qui se trouve à sa droite, même chose jusqu'à la 7ème et dernière SOCIETE GENERALE, puis coller sur le tout sur la feuille ptf.
c'est ce que j'essaie de faire depuis ce matin mais je n'y arrive pas !
j'ai repris ton code et je dois me planter quelque part ...
à+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > echo11
26 janv. 2009 à 01:51
Dand la feuille "pdf" tu a juste à changer N1,N2 etc par les noms réel et c'est tout.
A+
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
25 janv. 2009 à 21:39
bonjour

Il me semble que tu n'as besoin que d'une petite formule RECHERCHEV :

http://www.cijoint.fr/cjlink.php?file=cj200901/cijVF107g4.xls

la formule se trouve sur la colonne rajoutée.
0
merci ! en effet tu as raison la fonction RECHERCHEV donne le résultat. Il faut juste que je renseigne moi-même les 7 noms dans la feuille ptf.
Donc je pourrais oublier la macro mais je suis têtu alors ja vais continuer à chercher la boucle qui le fait (chercher les 7 noms et leurs cours respectifs dans la première feuille et les copier sur la seconde). J'ai observé pas mal de codes aujourd'hui et je commence à mieux comprendre comme ça marche. Lermitte22 m'a aussi aidé mais j'ai mal présenté le problème au départ, merci il faut que je comprenne bien ce que fait chaque instruction, ça va venir ...
à+
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684 > echo11
25 janv. 2009 à 23:31
bonjour

En macro, tu peux utiliser une macro événementielle qui s'exécute lorsque tu actives ta feuille ptf.

Elle est mise dans cette feuille ptf :

http://www.cijoint.fr/cjlink.php?file=cj200901/cijjIJ6CAB.xls
0
echo11 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
25 janv. 2009 à 23:39
sympa, je déchiffre ton code demain ... il se fait tard. à+
0
echo11 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
26 janv. 2009 à 19:32
j'ai compris comment fonctionne la macro, je ne l'aurais pas trouvée c'est sûr ! C'est très intéressant ces deux boucles qui fonctionnent ensemble. Mon problème est résolu et je vais pouvoir progresser en bossant sur bouquins. Encore merci ! Bonne soirée à tous.
0