Sélect une cells dans une plage de donnée et copier la ligne

Signaler
-
Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
-
Bonjour, tout le monde
j'ai un autre problème
.
Cette fois j'accepte les liens même si je suis retissent au personne qui spam de lien..
.
Donc je vous pose le contexte:
.
Dans le même classeur
Nous allons dire :
Chemin "C:\Users\Documents\"
Classeur "clas1.xls"
Feuille ou sont les informations "feuil1"
Feuille ou on copie les informations "feuil2"
.
Maintenant le problème :
.
Dans la "feuil1", il y a des deux colonnes
une avec des références, et l'autre avec des quantités.
.
Dans la "feuil2", il y a environ 7colonnes (mais c'est pas important)
et 51 000 lignes donc me dites pas de les faire une par une...
dans la 6em colonne il y a une référence (qui correspond au référence de la feuil1)
et la 7em je voudrait afficher les quantités qui correspondent aux références
.
En gros si vous comprenez pas "feuil1" j'ai :
.
.....A......|......B
YM05GF | 58
YM06GH | 23
TYHF21 | 11
.
De A2 à B35
.
Et "feuil2" j'ai
.
.....A.....|.....B.....|...|.............|......G......|......H
colone1 | colone2 |...| colone5 | YM05GF | et ici je voudrait afficher les quantités
colone1 | colone2 |...| colone5 | YM06GH | qu'il y a en feuil1 pour chaque
colone1 | colone2 |...| colone5 | TYHF21 | référence
.
De A2 à H52000
.
Je vous Remercie de votre aide.

2 réponses

Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
358
Bonjour.
Si chaque référence est bien unique une simple formule index/equiv devrait suffire. .
Sinon vous pouvez, par macro, utiliser la méthode Find.

Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
358
vous pouvez pas me donner un exemple ??
pour la "feuil1"

.....A......|......B
YM05GF | 58

pour la "feuil2"

.....A.....|.....B......|...|............|......G.....|......H
colone1 | colone2 |...| colone5 | YM05GF | ?

Car vous me parlez chinois la !!

Et une petite précision, comme j'ai énormément de ligne je veux pas faire des copier coller...

exemple pour H1
il recherche dans la colonne A(A2:A35) de la feuil1
la référence qui est en G1 de la feuil2
et copie la cellules B correspondante de la feuil1
en cellules H1 de la feuil2
Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
358
Un exemple de ?
en gros pour l'instant j'ai mis

Cells.Find(What:="[G2:G205]", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

mais je ne comprend rien de ce que ca fait, je ne comprend rien a ce qu'il faut faire ensuite
et je sais même pas si c'est ce qu'il fallait faire

Je suis totalement novice donc pire que du chinois pour moi
Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
358
Le "Find" c'est comme faire un ctrl+F sur une feuille. ..
Dans le what tu dois indiquer le "texte" cherché ou LA cellule contenant ce que tu cherches. .. non une
plage de plusieurscellules.
Il te faudra donc boucler sur chaque ligne de ta feuille 2 et faire un find parrapport aà la feuille 1.
D'accord
donc maintenant j'ai fait ces lignes de code
et je sais pas si c'est bon ou j'ai oublié quelque chose :

Sub le nom que tu veux ()

Dim Trouve As Range
Dim PlageDeRecherche As Range
Dim Valeur_Cherchee As Variant
Dim AdresseTrouvee As String

Valeur_Cherchee = <gras>("G1")</gras>
Set PlageDeRecherche = Sheet("feuil1").Columns(1)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
ActiveRows.Select.Copy
Sheets("feuil2").Range("H").PasteSpecial xlPastValues


Et je voudrait que ca le fasse pour chaque lignes
comment puis-je faire pour ?
Car si G1 je le nom réellement il va me mettre la même valeur pour tous
alors que les valeurs changes
Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
358
Bonjour,
Déjà, pour tes prochains messages contenant du Code, penses à utiliser la coloration Syntaxique ( première icone en partant de la droite lorsque tu rédiges un message)
Exemple :
'Ceci est du code mis en forme
Dim Trouve As Range 
Dim PlageDeRecherche As Range 
Dim Valeur_Cherchee As Variant 
Dim AdresseTrouvee As String 


Ensuite, comme je te l'ai indiqué précédement, tu vas devoir boucler sur chaque ligne de ta feuille 2.

DerniereLigne  = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
For l=1 to DerniereLigne
Valeur_Cherchee = Range("G"& l ).value
'...ici ton find puis tes actions de copier/coller
'...
Next ' on passe à la ligne suivante