Routine vba excel rechercher cell et copier ?
Résolu
echo11
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Routine vba excel rechercher cell et copier ?
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Rechercher ou entrer l'adresse - Guide
- Comment copier une vidéo youtube - Guide
6 réponses
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+
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+
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
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
Oui, la recherche se ferrait donc sur la colonne A.
Reste une question Comment tu sélectionne les 7 noms ?
Reste une question Comment tu sélectionne les 7 noms ?
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
à+
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
à+
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.
à+
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.
à+
Un exemple pour le transfert.
https://www.cjoint.com/?bBmSbwtGWM
A+
https://www.cjoint.com/?bBmSbwtGWM
A+
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
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
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
à+
donc dernière modification voici le lien :
https://www.cjoint.com/?bBpEbagvnl
à+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...
sur la feuille "ptf". tu colle un bouton
dans le code de la feuille tu colle
Oublie pas de changer Feuil1 au nom de la feuille de base.
Tu dis...
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...
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 ...
à+
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 ...
à+
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.
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.
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 ...
à+
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 ...
à+