Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1868 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recherche dans des feuilles de données

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recherche dans des feuilles de données

n°2281697
fakry
Posté le 18-05-2016 à 16:00:13  profilanswer
 

Bonjour,  
Je me suis crée un petit programme excel pour me rechercher des données en fonction de la cellule choisie je voudrai qu'il me remplisse les colonnes ou apparaissent Ca et Cs.  
Le problème c'est que mon fichier le fait mais il est trop lent (j'ai l'impression qu'il perd du temps).  
A la première itération il remplit toutes les lignes , alors que je voudrais qu'il remplisse juste chaque ligne en fonction du paramètre donné dans microwave.  
Or pour le moment il voit le premier paramètre et va remplir toutes les cases du tableau.  
En gros B1 correspond à P ou FP  
B2 à P/FP  
B3 à HP/UHX  
B4 à GP ou KP  
B5 et B6 ne sont pas utilisés  
 
En gros chaque degré donne une valeur de Ca et Cs lu dans une des feuilles Excel.  
Le programme fait déjà ce que je veux faire mais il est lent j ai l impression de faire des boucles inutiles.  
 
En gros il faudrait que le programme ne remplisse que les colonnes O,P,S,T,Y,Z,AD,AE,AI,AJ,AN,AO , il a parfois tendence a remplir d'autres colonnes et à effacer mes formules .  
Est ce que quelqu'un pourrait m'envoyer une version améliorée de ce que je demande ?  
 
Merci.  

Code :
  1. Sub Macro1()
  2. Dim cel As Range 'déclare la variable cel (CELlule)
  3. Dim Ca1 As Range 'déclare la variable Ca (Recherche
  4. Dim Cs1 As Range 'déclare la variable Ca (Recherche
  5. Dim Ca2 As Range 'déclare la variable Ca (Recherche
  6. Dim Cs2 As Range 'déclare la variable Ca (Recherche
  7. Dim i As Integer
  8. Dim f As Integer
  9. With Sheets("MO" ) 'prend en compte l'onglet "AVANT" (à adapter à ton cas)
  10. 'boucle sur toutes les cellules éditées cel de la colonne A (en partant de la ligne 2)
  11. f = Range("K2" ).Value
  12. For i = 16 To 16 + f
  13. For Each cel In .Range("N" & i & ":AM" & i & .Cells(Application.Rows.Count, 1).End(xlUp).Row)
  14. 'définit la recherche r (recherche la valeur de la cellule en partie dans la colonne A de l'onglet "BASE" )
  15. If Range("B" & i).Value Like "P ou FP" Then
  16. Set Ca1 = Sheets("B1" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  17. Set Cs1 = Sheets("B1" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  18. 'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
  19. If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
  20. If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
  21. Else
  22. If Range("B" & i).Value Like "P/FP" Then
  23. Set Ca1 = Sheets("B2" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  24. Set Cs1 = Sheets("B2" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  25. 'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
  26. If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
  27. If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
  28. Else
  29. If Range("B" & i).Value Like "HP/UHX" Then
  30. Set Ca1 = Sheets("B3" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  31. Set Cs1 = Sheets("B3" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  32. 'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
  33. If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
  34. If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
  35. Else
  36. If Range("B" & i).Value Like "GP ou KP" Then
  37. Set Ca1 = Sheets("B4" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  38. Set Cs1 = Sheets("B4" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  39. 'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
  40. If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
  41. If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
  42. Else
  43. If Range("B" & i).Value Like "*B5*" Then
  44. Set Ca1 = Sheets("B5" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  45. Set Cs1 = Sheets("B5" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  46. 'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
  47. If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
  48. If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
  49. Else
  50. If Range("B" & i).Value Like "*B6*" Then
  51. Set Ca1 = Sheets("B6" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  52. Set Cs1 = Sheets("B6" ).Columns(1).Find(cel.Value, , xlValues, xlPart)
  53. 'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
  54. If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
  55. If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
  56. End If
  57. End If
  58. End If
  59. End If
  60. End If
  61. End If
  62. Next cel 'prochaine cellule de la boucle
  63. Next
  64. End With 'fin de la prise en compte de l'onglet "AVANT"
  65. End Sub

mood
Publicité
Posté le 18-05-2016 à 16:00:13  profilanswer
 

n°2282493
informer
Posté le 28-05-2016 à 18:38:01  profilanswer
 

Bonjour fakry
 
Joli code qui réinvente le SQL :pt1cable:  ... alors conseil d'ami, migre sur base de données à minima  Access car ton code en SQL, c'est rien à faire et en plus tu as des requêteur visuel, pas besoin de coder  :bounce:


Message édité par informer le 28-05-2016 à 18:38:48

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recherche dans des feuilles de données

 

Sujets relatifs
[C#]Problème de droit d'accès, Outil de recherchebesoin de gagner du temps sur le cacul de recherche dans gros fichier
extraction de données PDFRecherche de données
Changer les données affichées sur une page WebRecherche valeur dans classeur
[PHP/Bootstrap] Problème de pièce jointe et d'envoi de donnéesInsérer des données CSV dans un graph sur une page CSS/HTML
[Résolu] Recherche de données dans différentes feuilles Excel 
Plus de sujets relatifs à : Recherche dans des feuilles de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR