Recherche de données dans un tableau
teamstgobain
-
eriiic Messages postés 25847 Statut Contributeur -
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
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:
- Recherche de données dans un tableau
- Fuite données maif - Guide
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
5 réponses
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
Il est où le fichier de travail ?
Sinon l'enregistreur de macro te donne une bonne base de départ.
eric
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
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
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
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en enlevant le superflue et en reajoutant des inhibiteurs je pense que tu peux accelerer :
Dis moi si ça accélère ( j'ai aucune certitude)
PS : slt eric, slt Franck
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