Macro copier certaines données ligne vers certaines cellules avec condition text [Résolu]

Signaler
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
11 février 2014
-
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour,
Je cherche à utiliser un userform avec une textbox et un commandbutton pour chercher un nombre dans une feuille, identifier la ligne présentant ce nombre, sachant qu'il ne peut y avoir qu'une ligne (un nombre par ligne), copier les infos de certaines cellules de cette ligne vers certaines cellules d'une autre ligne, d'une autre feuille, j'espère avoir été assez clair.
J'ai commencé a bossé sur un code mais il ne fonctionne pas, je voudrais vous le soumettre.

Private Sub CommandButton1_Click()
Dim TBLF As Range
Dim CIBLE As Variant
With Worksheets("BDD")
For Each CIBLE In .Range("A1:A" & Range("A65536").End(xlUp).Row)
Set TBLF = .Find(TextBox1.Value, LookIn:=xlValues)
If Not TBLF Is Nothing Then
Rows(TBLF.Row + 1).Insert Shift:=xlDown
Cells(TBLF.Row + 1, 2) = Sheets("CR_INTER").Range("A" & CIBLE.Row)
End If
Next
End With
End Sub


Merci

7 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
Ta valeur à recherche étant le textbox, tu dois faire un Find sur la colonne souhaitée, sans boucle

Ça pourrait ressembler à ceci

dim Valeur as Variant
dim Recherche as Range

Valeur=Textbox1.text
Set Recherche = Sheets("BDD").Columns("A").Find(Valeur, LookIn:=xlValues, LookAt:=xlWhole)
if not recherche is nothing then
    msgbox "Valeur <" & valeur & "> trouvée sur la ligne " & recherche.row
else
    msgbox "Valeur non trouvée"
end if


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
Bonjour,
Avant d'aller plus loin, hein ..
Pourquoi lances-tu (sur la feuille entière, en plus) une recherche (de toujours la même valeur, en plus) pour chaque ligne de la plage ?
Réponds d'abord à cette question simple, de sorte à mettre en exergue ta "logique".
Et j'ai bien dit "avant d'aller plus loin" (car le "plus loin" n'est pas mieux !)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
11 février 2014

Bonjour ucfoutu,
pour répondre à cette simple question, je dirai qu'il s'agit d'une plage de données variable dans laquelle je cherche une valeur variable qui me servira à extraire les infos dont j'ai besoin, cependant il ne peut y avoir qu'une valeur distinct pour une ligne distincte.
Voilà, et merci pour la rapidité de réponse.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
Ah ?
montre-moi donc où se trouvent là-dedans :
With Worksheets("BDD")
For Each CIBLE In .Range("A1:A" & Range("A65536").End(xlUp).Row)
Set TBLF = .Find(TextBox1.Value, LookIn:=xlValues)

1) ta variable plage "variable"
2) ta variable valeur cherchée "variable" .
C'est une plaisanterie ou simplement une écriture de code copié/collé non compris ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
11 février 2014

Non ce n'est pas une plaisanterie, j'ai repris un code que j'ai voulu adapté, et j'aimerai justement comprendre pourquoi cela ne fonctionne pas, je suis débutant mais je pense que ça se voit comme le nez au milieu de la figure, je n'ai pas la prétention d'apporter une pierre angulaire au forum, désolé,
mais laissez moi une chance de faire mes preuves...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
Alors :
commence par réfléchir à la portée de chacune des lignes de ton code. Ce sera un début salutaire.
Ne jamais écrire une instruction sans en connaître la finalité (donc ce qu'elle fait).
Au lkieu de mettre bout-à-bout des lignes de code "ramassées" ici et là :
- ouvre ton aide VBA sur la méthode Find (range.find) (lis attentivement, ainsi que l'exemple dont elle est assortie)
- fais-en ensuite autant en ce qui concerne la méthode Copy
Je t'aiderai bien volontiers en voyant le code logique que tu auras TOI, tenté d'écrire après ces lectures indispensables.
Je ne connais personnellement pas (et ne veux pas les connaître) d'autres approches du développement.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
11 février 2014

Bonjour c'est foutu,
Après avoir lu attentivement mon aide, effectivement je me suis emmêlé les pinceaux entre la boucle et le .find.
En faite je dois soit faire une boucle et tester chaques valeurs, soit faire un .find sur un Range. C'est ça?