Recherche de données dans un tableau

teamstgobain -  
eriiic Messages postés 25847 Statut Contributeur -
Bonjour à toutes la communauté,

Je me permets de me tourner vers vous car je suis bloqué concernant un code VBA.
Voilà, à partir d'un tableau de données (qui comprend un nombre de ligne différent selon le jour de production) j'effectue une recherche par rapport à une donné d'entrée dans un "Userform", puis je colle cette donnée à chaque fois qu'elle apparaît dans une autre feuille de mon classeur. Vous trouverez ci dessous mes lignes de codes :

If TextBox2 <> "" Then
Worksheets("Data").Activate
Z = Range("A2").End(xlDown).Row
For i = 2 To Z
If Range("F" & i).Value = TextBox2.Value Then
Worksheets("Data").Rows(i).Copy
Sheets("Data_2").Select
ligne = Sheets("Form").Range("A1").Value
Range("A" & ligne).Select
ActiveSheet.Paste
Sheets("Form").Range("A1").Value = Sheets("Form").Range("A1").Value + 1
Worksheets("Data").Activate
End If
Next i
End If


Ce code fonctionne parfaitement si mon tableau de départ comporte peu de données, mais dès que j'ai plus de 2000 données le traitement est long ....

Ce que je souhaite savoir, c'est est-ce qu'il possible d'écrire un code avec un "For each" ou quelque chose du genre qui me permettrai de selectionner toutes mes données contenant ma "textbox2" puis tout coller en une seule fois au lieu de procéder ligne par ligne ...

J'espère avoir était assez clair dans mes explications, n'hésitez à me contactez pour plus d'informations.

Merci d'avance aux personnes qui prendront le temps de me répondre



A voir également:

5 réponses

eriiic Messages postés 25847 Statut Contributeur 7 279
 
Je suis d'accord pour le filtre Eric, mais est-il possible qu'il soit en automatique ?
Il est où le fichier de travail ?
Sinon l'enregistreur de macro te donne une bonne base de départ.

eric
1
eriiic Messages postés 25847 Statut Contributeur 7 279
 
Bonjour,

tu filtres et copie-colle le résultat du filtre, c'est ce qui sera le plus rapide.

Pour tes prochaines demandes : mettre en forme le code et joindre un fichier (cjoint.com)

eric
0
teamstgobain Messages postés 4 Statut Membre
 
Je suis d'accord pour le filtre Eric, mais est-il possible qu'il soit en automatique ?
En cliquant sur le bouton "Valider" de mon userform ?
0
pijaku Messages postés 13513 Statut Modérateur 2 763
 
Bonjour,

Regardez le code de cette fonction findall : https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel#findall

En cas de difficulté n'hésitez pas...

ps : salut Eric
0
teamstgobain Messages postés 4 Statut Membre
 
Merci d'avoir pris le temps de me repondre.

pijaku, désomé pour le doublon, étant donné que je suis nouveau sur le site je pensais que ma demande n'avais pas était prise en compte.
0

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

Posez votre question
borntobealive Messages postés 167 Statut Membre 7
 
en enlevant le superflue et en reajoutant des inhibiteurs je pense que tu peux accelerer :

application.screenUpdating = false
 
dim cel as Range 
dim Data as Worksheet
dim Data2 as Worksheet 

set Data = ThisWorkbook.Worksheets("Data")
set Data2 = ThisWorkbook.Worksheets("Data_2")
 
'j'ai pas mis F parce que je sais pas si il n'y pas de cellule vide dans la colonne en question 
for each cel in Data.Range("A:A").specialCells(xlTextValue)
'du coup ça m'oblige à faire un offset 
    if cel.offset(0,5).value = textBox2.value then 
        ligne = Sheets("Form").Range("A1").Value
        Data2.cells(ligne,1).entireRow.value = cel.entireRow.value
        sheets("Form").range("A1").value = ligne +1        
    end if 
next cel 
 
application.screenUpdating = true


Dis moi si ça accélère ( j'ai aucune certitude)

PS : slt eric, slt Franck
0