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

  • Auteur de la discussion badboys0601
  • Date de début

badboys0601

Nouveau membre
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
 

papamike62

Expert
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 ?
 

zeb

Modérateur
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.
 

badboys0601

Nouveau membre
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
 

zeb

Modérateur
Je n'ai pas tout compris. De quelle base de données parles-tu ?
 

badboys0601

Nouveau membre
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é:

Code:
Sub Macro_test()
'
' Macro_test Macro
' Macro enregistrée le 08/03/2010 par Verdi

If Range("c7") = "PI" Then
Call piece
Else
Call recherchefeuille
End If
End Sub

'recherche feuille_____________________________________________________________
Sub recherchefeuille()
a = Sheets("formulaire").Range("c8")
Sheets(a).Select
Call COPIE
End Sub

'copie elements feuille dans stockage____________________________________________________
Sub COPIE()

Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("STOCKAGE").Select
Range("a1").Select
ActiveSheet.Paste
Call propreté
End Sub
'Appeler la macro recherche______________
Sub propreté()
If Sheets("Formulaire").Range("C6") = "S" And Sheets("Formulaire").Range("c7") = "PI" Then
Call recherchePI_S
End If
If Sheets("Formulaire").Range("C6") = "S" And Sheets("Formulaire").Range("c7") = "CO" Then
Call rechercheP_S
End If
If Sheets("Formulaire").Range("C6") = "S" And Sheets("Formulaire").Range("c7") = "PA" Then
Call rechercheP_S
End If
If Sheets("Formulaire").Range("C6") = "P" And Sheets("Formulaire").Range("c7") = "PI" Then
Call recherchePI_P
End If
If Sheets("Formulaire").Range("C6") = "P" And Sheets("Formulaire").Range("c7") = "CO" Then
Call rechercheP_P
End If
If Sheets("Formulaire").Range("C6") = "P" And Sheets("Formulaire").Range("c7") = "PA" Then
Call rechercheP_P
End If


    
End Sub


Sub rechercheP_S()
' boucle de recherche bdd


Sheets("BDD2").Select

o = Sheets("STOCKAGE").Range("A1").Value
p = Sheets("STOCKAGE").Range("B1").Value
q = Sheets("STOCKAGE").Range("C1").Value
r = Sheets("STOCKAGE").Range("D1").Value


Do While Sheets("STOCKAGE").Range("A1") <> ""

Dim i As Integer
For i = 2 To 200

        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
           Range("e" & i).Value = Range("e" & i).Value + 1 * Sheets("formulaire").Range("b10").Value
            Call Macro2
            Sheets("BDD2").Select
        End If

Next i
    
Loop

End Sub

Sub rechercheP_P()
' boucle de recherche bdd


Sheets("BDD2").Select

o = Sheets("STOCKAGE").Range("A1").Value
p = Sheets("STOCKAGE").Range("B1").Value
q = Sheets("STOCKAGE").Range("C1").Value
r = Sheets("STOCKAGE").Range("D1").Value


Do While Sheets("STOCKAGE").Range("A1") <> ""

Dim i As Integer
For i = 2 To 200

        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
            Range("f" & i).Value = Range("f" & i).Value + 1 * Sheets("formulaire").Range("b10").Value
            Call Macro2
            Sheets("BDD2").Select
        End If

Next i
    
Loop

End Sub

 Sub recherchePI_S()

 
 ' boucle de recherche bdd


Sheets("BDD2").Select

o = Sheets("STOCKAGE").Range("A1").Value
p = Sheets("STOCKAGE").Range("B1").Value
q = Sheets("STOCKAGE").Range("C1").Value
r = Sheets("STOCKAGE").Range("D1").Value


Do While Sheets("STOCKAGE").Range("A1") <> ""

Dim i As Integer
For i = 2 To 200
 
   
   
   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
            Range("e" & i).Value = Range("e" & i).Value + Sheets("stockage").Range("e1").Value
            Call Macro2
            Sheets("BDD2").Select
        End If

Next i
    
Loop
 End Sub

 Sub recherchePI_P()

 
 ' boucle de recherche bdd


Sheets("BDD2").Select

o = Sheets("STOCKAGE").Range("A1").Value
p = Sheets("STOCKAGE").Range("B1").Value
q = Sheets("STOCKAGE").Range("C1").Value
r = Sheets("STOCKAGE").Range("D1").Value


Do While Sheets("STOCKAGE").Range("A1") <> ""

Dim i As Integer
For i = 2 To 200
 
   
   
   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
            Range("F" & i).Value = Range("F" & i).Value + Sheets("stockage").Range("e1").Value
            Call Macro2
            Sheets("BDD2").Select
        End If

Next i
    
Loop
 End Sub

[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
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 100
Membres
1 586 287
Dernier membre
lucilleguffey
Partager cette page
Haut