Se connecter avec
S'enregistrer | Connectez-vous

Mise a jour d'une base de donné sur exel

Dernière réponse : dans Programmation

bonjour,

j'ai mis en place une base de donné, sur les composants d'un circuit pour la peinture avec en fin une quantité sale ou propre.
Afin de mettre a jour ma base de donné j'ai créer des fiches accompagné d'une macro, mais étant débutant j'ai créer une macro très lourde de se style:

Sheets("Sale").Select
'HAXOO

Dim D4 As Integer
Dim D5 As Integer
Dim D6 As Integer
D4 = Range("Sale!D4")
D5 = Range("Sale!D5")
D6 = Range("Sale!D6")
Dim a As Integer
Dim B As Integer
Dim C As Integer
Dim d As Integer
Dim E As Integer
Dim f As Integer
Dim g As Integer
Dim h As Integer
Dim sommeb As Integer
Dim sommec As Integer
Dim sommed As Integer
Dim sommeE As Integer
Dim sommef As Integer
Dim sommeg As Integer
Dim sommeh As Integer
....

je vous passe la suite...On ma dit que je pouvais créer une macro qui pouvais me retrouvé dans ma base de donné la ligne spécifique que je veux mettre a jour.

Je me doute que je ne suis pas très clair alors n'hésitai pas a me posé des questions

merci beaucoup pour votre aide

Autres pages sur : mise jour base donne exel

Lassé par la pub ? Créez un compte

En effet c'est pas clair... ton extrait de code ne fait rien (ou presque).

Tu peux te pencher sur plusieurs fonctions Excel pour traiter des bases de données :
- BDLIRE
- INDEX
- RECHERCHEV et RECHERCHEH

Est-ce que tu peux envoyer plus d'infos pour essayer de comprendre ce que tu veux faire ?
Expert Programmation

Bonjour à tous.

badboy, sois un bon garçon, va lire le règlement et applique-le. Le code se présente entre balise [code].

papamike62, ta réponse ne concerne pas le VB. Mais elle est sans doute pertinente.
Si badboy préfère une solution purement Excel, je propose de rediriger ce topic dans le forum Windows/Logiciel. Si c'est bien en VB qu'une solution doit être donnée, ce topic est bien ici.

Oups désolé pour le règlement

alors je vais essayé d'être le plus claire possible

D'un coté j'ai une base de donné
dans ce style:

machine-->élément-->taille-->piece-->quantité

et d'un autre coté un formulaire pour les opérateur, où il remplira des cellules avec le nombre d'éléments qui la reçut pour un type de machine.
Un élément peut incrémenté plusieurs pièce.

Je veux utilisé une macro car, elle me permet une automatisation avec un minimum d'action pour les opérateur
Ma premier macro n'était qu'une simple somme si je peux dire sa comme sa avec une remise a zéro de mon formulaire à la fin. Cette technique simple mais très lourde comporte un inconvénient, ma base de donné devient rigide car comme ma macro fait référence a chaque cellule un décalage dans la base donné est tout est faussé.

j'espère que c'est plus clair

merci beaucoup

désolé pour le temps de réponse j'étais sur une solution et une solution qui marche!!!

alors voici une partie de ma base de donné
MACHINE ELEMENT CIRCUIT TAILLE PIECECIRCUIT Qts sales Qts propre
HAX00 ELEMENT_RESERVOIR TAILLE 1 RESERVOIR 2 2
HAX00 ELEMENT_RESERVOIR TAILLE 1 PORTE 2 2
HAX00 ELEMENT_RESERVOIR TAILLE 1 FOURREAUX 2 2
HAX00 ELEMENT_RESERVOIR TAILLE 1 PAL 2 2
HAX00 ELEMENT_RESERVOIR TAILLE 1 TIGE 2 2
HAX00 ELEMENT_RESERVOIR TAILLE 1 CAPUCHON 2 2
HAX00 ELEMENT_RESERVOIR TAILLE 1 BOUCHON 2 2
HAX00 ELEMENT_RESERVOIR TAILLE 2 RESERVOIR
HAX00 ELEMENT_RESERVOIR TAILLE 2 PORTE
HAX00 ELEMENT_RESERVOIR TAILLE 2 FOURREAUX
HAX00 ELEMENT_RESERVOIR TAILLE 2 PAL
HAX00 ELEMENT_RESERVOIR TAILLE 2 TIGE
HAX00 ELEMENT_RESERVOIR TAILLE 2 CAPUCHON
HAX00 ELEMENT_RESERVOIR TAILLE 2 BOUCHON
HAX00 ELEMENT_RESERVOIR TAILLE 3 RESERVOIR
HAX00 ELEMENT_RESERVOIR TAILLE 3 PORTE
HAX00 ELEMENT_RESERVOIR TAILLE 3 FOURREAUX
HAX00 ELEMENT_RESERVOIR TAILLE 3 PAL
HAX00 ELEMENT_RESERVOIR TAILLE 3 TIGE
HAX00 ELEMENT_RESERVOIR TAILLE 3 CAPUCHON
HAX00 ELEMENT_RESERVOIR TAILLE 3 BOUCHON
HAX00 ELEMENT_POMPE TAILLE 1 TUBE PISTON 4 2
HAX00 ELEMENT_POMPE TAILLE 1 COLLECTEUR 4 2
HAX00 ELEMENT_POMPE TAILLE 1 TIGE 4 2
HAX00 ELEMENT_POMPE TAILLE 1 COUPELLE 4 2
HAX00 ELEMENT_POMPE TAILLE 1 GUIDE 12 2
HAX00 ELEMENT_POMPE TAILLE 1 PORTE 4 2
.....

le but était de m'incrémenter les différentes quantité a l'aide d'un formulaire
ce formulaire je l'est constitué grâce a des liste de liste qui font référence au type de machine, la taille, la propreté(sale ou propre) et si l'élément était complet ou pas.

ma solution à était celle ci

lorsque l'opérateur a fini de remplir le formulaire grâce a la formule concassé je créer un sorte de nom pour une page( page que j'ai déja créer avant) ex HA_C_T1_S --> traduction pour la machine HAX00, circuit complet, taille 1, sale.
Dans cette feuille j'ai copier tout les lignes qui a appartienne à la machine hax00 de taille1, ainsi de suite pour les autrre machine,autre taille...


voila le plus important la marco que j'ai utilisé:

  1. Sub Macro_test()
  2. '
  3. ' Macro_test Macro
  4. ' Macro enregistrée le 08/03/2010 par Verdi
  5.  
  6. If Range("c7") = "PI" Then
  7. Call piece
  8. Else
  9. Call recherchefeuille
  10. End If
  11. End Sub
  12.  
  13. 'recherche feuille_____________________________________________________________
  14. Sub recherchefeuille()
  15. a = Sheets("formulaire").Range("c8")
  16. Sheets(a).Select
  17. Call COPIE
  18. End Sub
  19.  
  20. 'copie elements feuille dans stockage____________________________________________________
  21. Sub COPIE()
  22.  
  23. Range("A1").Select
  24. Range(Selection, Selection.End(xlToRight)).Select
  25. Range(Selection, Selection.End(xlDown)).Select
  26. Selection.Copy
  27. Sheets("STOCKAGE").Select
  28. Range("a1").Select
  29. ActiveSheet.Paste
  30. Call propreté
  31. End Sub
  32. 'Appeler la macro recherche______________
  33. Sub propreté()
  34. If Sheets("Formulaire").Range("C6") = "S" And Sheets("Formulaire").Range("c7") = "PI" Then
  35. Call recherchePI_S
  36. End If
  37. If Sheets("Formulaire").Range("C6") = "S" And Sheets("Formulaire").Range("c7") = "CO" Then
  38. Call rechercheP_S
  39. End If
  40. If Sheets("Formulaire").Range("C6") = "S" And Sheets("Formulaire").Range("c7") = "PA" Then
  41. Call rechercheP_S
  42. End If
  43. If Sheets("Formulaire").Range("C6") = "P" And Sheets("Formulaire").Range("c7") = "PI" Then
  44. Call recherchePI_P
  45. End If
  46. If Sheets("Formulaire").Range("C6") = "P" And Sheets("Formulaire").Range("c7") = "CO" Then
  47. Call rechercheP_P
  48. End If
  49. If Sheets("Formulaire").Range("C6") = "P" And Sheets("Formulaire").Range("c7") = "PA" Then
  50. Call rechercheP_P
  51. End If
  52.  
  53.  
  54.  
  55. End Sub
  56.  
  57.  
  58. Sub rechercheP_S()
  59. ' boucle de recherche bdd
  60.  
  61.  
  62. Sheets("BDD2").Select
  63.  
  64. o = Sheets("STOCKAGE").Range("A1").Value
  65. p = Sheets("STOCKAGE").Range("B1").Value
  66. q = Sheets("STOCKAGE").Range("C1").Value
  67. r = Sheets("STOCKAGE").Range("D1").Value
  68.  
  69.  
  70. Do While Sheets("STOCKAGE").Range("A1") <> ""
  71.  
  72. Dim i As Integer
  73. For i = 2 To 200
  74.  
  75. If Range("A" & i) = Sheets("STOCKAGE").Range("A1").Value And Range("B" & i) = Sheets("STOCKAGE").Range("B1").Value And Range("C" & i) = Sheets("STOCKAGE").Range("C1").Value And Range("D" & i) = Sheets("STOCKAGE").Range("D1").Value Then
  76. Range("e" & i).Value = Range("e" & i).Value + 1 * Sheets("formulaire").Range("b10").Value
  77. Call Macro2
  78. Sheets("BDD2").Select
  79. End If
  80.  
  81. Next i
  82.  
  83. Loop
  84.  
  85. End Sub
  86.  
  87. Sub rechercheP_P()
  88. ' boucle de recherche bdd
  89.  
  90.  
  91. Sheets("BDD2").Select
  92.  
  93. o = Sheets("STOCKAGE").Range("A1").Value
  94. p = Sheets("STOCKAGE").Range("B1").Value
  95. q = Sheets("STOCKAGE").Range("C1").Value
  96. r = Sheets("STOCKAGE").Range("D1").Value
  97.  
  98.  
  99. Do While Sheets("STOCKAGE").Range("A1") <> ""
  100.  
  101. Dim i As Integer
  102. For i = 2 To 200
  103.  
  104. If Range("A" & i) = Sheets("STOCKAGE").Range("A1").Value And Range("B" & i) = Sheets("STOCKAGE").Range("B1").Value And Range("C" & i) = Sheets("STOCKAGE").Range("C1").Value And Range("D" & i) = Sheets("STOCKAGE").Range("D1").Value Then
  105. Range("f" & i).Value = Range("f" & i).Value + 1 * Sheets("formulaire").Range("b10").Value
  106. Call Macro2
  107. Sheets("BDD2").Select
  108. End If
  109.  
  110. Next i
  111.  
  112. Loop
  113.  
  114. End Sub
  115.  
  116. Sub recherchePI_S()
  117.  
  118.  
  119. ' boucle de recherche bdd
  120.  
  121.  
  122. Sheets("BDD2").Select
  123.  
  124. o = Sheets("STOCKAGE").Range("A1").Value
  125. p = Sheets("STOCKAGE").Range("B1").Value
  126. q = Sheets("STOCKAGE").Range("C1").Value
  127. r = Sheets("STOCKAGE").Range("D1").Value
  128.  
  129.  
  130. Do While Sheets("STOCKAGE").Range("A1") <> ""
  131.  
  132. Dim i As Integer
  133. For i = 2 To 200
  134.  
  135.  
  136.  
  137. If Range("A" & i) = Sheets("STOCKAGE").Range("A1").Value And Range("B" & i) = Sheets("STOCKAGE").Range("B1").Value And Range("C" & i) = Sheets("STOCKAGE").Range("C1").Value And Range("D" & i) = Sheets("STOCKAGE").Range("D1").Value Then
  138. Range("e" & i).Value = Range("e" & i).Value + Sheets("stockage").Range("e1").Value
  139. Call Macro2
  140. Sheets("BDD2").Select
  141. End If
  142.  
  143. Next i
  144.  
  145. Loop
  146. End Sub
  147.  
  148. Sub recherchePI_P()
  149.  
  150.  
  151. ' boucle de recherche bdd
  152.  
  153.  
  154. Sheets("BDD2").Select
  155.  
  156. o = Sheets("STOCKAGE").Range("A1").Value
  157. p = Sheets("STOCKAGE").Range("B1").Value
  158. q = Sheets("STOCKAGE").Range("C1").Value
  159. r = Sheets("STOCKAGE").Range("D1").Value
  160.  
  161.  
  162. Do While Sheets("STOCKAGE").Range("A1") <> ""
  163.  
  164. Dim i As Integer
  165. For i = 2 To 200
  166.  
  167.  
  168.  
  169. If Range("A" & i) = Sheets("STOCKAGE").Range("A1").Value And Range("B" & i) = Sheets("STOCKAGE").Range("B1").Value And Range("C" & i) = Sheets("STOCKAGE").Range("C1").Value And Range("D" & i) = Sheets("STOCKAGE").Range("D1").Value Then
  170. Range("F" & i).Value = Range("F" & i).Value + Sheets("stockage").Range("e1").Value
  171. Call Macro2
  172. Sheets("BDD2").Select
  173. End If
  174.  
  175. Next i
  176.  
  177. Loop
  178. End Sub
  179.  
  180. [code]

_________________
Modo: Pour fermer, il faut écrire [ / CODE ].

alors dans cette macro, les différente fonction utilisé son les if pour les conditions, les do while pour les boucles.

j'espere que sa pourra aidé des passants merci encore
Lassé par la pub ? Créez un compte