Base de donnée automatisée et condition de remplissage
Bonjour à tous,
Désolée d'avance pour la lecture, je vais juste essayer d'être la plus complète possible.
J'ai un soucis au niveau de VBA depuis un petit moment. J'ai tenté de trouver des réponses dans les questions déjà posées mais je ne trouve pas de solution à mon problème, je me permets donc de poster.
Je précise d'avance que je ne suis pas une habituée de VBA, je débute donc je ne connais pas très très bien le système encore. Alors excusez moi d'avance si je m'exprime mal, que je n'ai pas les bons termes etc
Voici donc mon problème, je vais essayer d'être claire (voir par rapport au fichier joint ça aidera certainement).
Je tente de créer un fichier Excel avec une base de donnée, et une espèce de "plateforme" de départ pour pouvoir rentrer les données dans cette base de manière plus simple que de les rentrer ligne par ligne (et plus ludique en même temps).
Pour mieux comprendre : ces données sont en fait des résultats de bactério et de physico sur des yaourts. Et il y a une deuxième base en lien avec l'autre, par rapport au process de fabrication de ces yaourts. C'est deux programmes différents que j'ai crée car les données ne sont jamais obtenues en même temps dans la pratique. On rentre d'abord les données bactério et physico des produits finis, puis les données process plus tard. D'où le fait que les deux sont indépendant. J'ai donc déjà réussi à créer le programme permettant de rentrer mes données dans la base.
Maintenant, mon soucis est le suivant : ces résultats process sont en concordance avec les résultats bactério. J'ai besoin que si la date de fabrication que je rentre dans mes données process (en D33 dans la feuille "entrer données") est la même qu'une date de fabrication qui est déjà dans la base (en colonne A de la feuille "base"), dans ce cas que mes données de ma plateforme process se mettent dans cette même ligne.
Mais ma condition supplémentaire (et pas des plus facile je pense
Le but est de pouvoir savoir pour tel container qui a été utilisé de telle heure à telle heure, on a produit tel et tel yaourt avec, dont les résultats physico et bactério sont les suivant.
J'espère vraiment me faire comprendre. N'hésitez pas à me reposer des questions pour les explications si ce n'est pas clair, c'est pas évident du tout à expliquer.
Dans le fichier joint, je met un exemple de ce que je voudrais pour essayer d'illustrer mes propos, avec des explications (peut-être un peu bebette mais au moins j'aurais fais le max pour me faire comprendre
D'avance merci à ceux qui tenteront de m'aider
Et dites moi si ce que je souhaite est possible au moins
Cordialement,
Alicia
Bonjour,
Personne ne saurait m'aider?
J'aimerais au moins savoir si ce que je souhaite parait faisable ou pas?
Alicia
Bonjour
Lors de la saisie du process, il faut chercher dans la colonne de la Base :
- si tu trouves la date (utiliser find)
- si trouvée, vérifier l'horaire en colonne C par rapport à ton intervalle (utiliser offset pour lire C par rapport à la cellule trouvée) :
si OK récupérer le numéro de la ligne ou utiliser offset pour inscrire les données sur cette ligne - sinon poursuivre la recherche
Reposte si tu coinces sur un aspect.
Edit je n'avais pas vu ton bout de code. Eviter les select.
J'essaye de reposter un code + tard
Re
Sub Valider_process()
Dim Rep As Boolean
Dim DateCherche As Range
Dim Trouve As String
Rep = MsgBox("Etes-vous sûr?", vbYesNo)
If Rep = vbNo Then Exit Sub
With Sheets("Base")
Set DateCherche = .Range("A:A").Find(Range("dateprocess").Value)
If Not DateCherche Is Nothing Then
Trouve = DateCherche.Address
Do
If DateCherche.Offset(0, 2) >= Range("de") And DateCherche.Offset(0, 2) <= Range("à") Then
DateCherche.Offset(0, 14) = Range("N°tank")
DateCherche.Offset(0, 15) = Range("de")
DateCherche.Offset(0, 16) = Range("à")
DateCherche.Offset(0, 17) = Range("MGpoud")
DateCherche.Offset(0, 18) = Range("MSpoud")
DateCherche.Offset(0, 19) = Range("entéromix")
DateCherche.Offset(0, 20) = Range("totmixent")
DateCherche.Offset(0, 21) = Range("LMmix")
DateCherche.Offset(0, 22) = Range("totmixLM")
DateCherche.Offset(0, 23) = Range("GTmix")
DateCherche.Offset(0, 24) = Range("totmixGT")
DateCherche.Offset(0, 25) = Range("bacmix")
DateCherche.Offset(0, 26) = Range("totmixbac")
DateCherche.Offset(0, 27) = Range("cComP")
End If
Set DateCherche = .Range("A:A").FindNext(DateCherche)
Loop While Not DateCherche Is Nothing And DateCherche.Address <> Trouve
End If
End With
End SubNB : Inutile d'utiliser une cellule pour inscrire la réponse oui/non, une variable suffit.
Bonjour 78chris,
1000 merci à toi
Ca fonctionne à merveille!
Alicia
Bonjour,
Je me permets de reposter une deuxième fois à propos de ce fichier, car j'ai un nouveau problème (j'espère en venir à bout un jour
Je m'explique : la saisie de mes données bactério ne sont également pas faite toutes en même temps. Par exemple mes données pour les GT (germes totaux) vont être rentrées un jour, et mes données pour les bacillus un autre jour.
Lorsque je test mon programme, que je rentre des données pour les GT, puis pour les bacillus plus tard, mes données que j'avais rentré pour GT s'effacent. J'aurais besoin que les données qui ont déjà été renseignées dans la base ne s'effacent pas quand d'autres données arrivent. Il faudrait que les cellules soient en quelques sortes indépendantes les unes des autres.
Autre problème que je ne comprend pas du tout, j'ai dans mon programme cette partie :
Set DateCherche = .Range("A:A").Find(Range("datedefab").Value)
Set DateCherche = .Range("B:B").Find(Range("dateDLC").Value)
Set DateCherche = .Range("C:C").Find(Range("Lheure").Value)
Set DateCherche = .Range("D:D").Find(Range("lamark").Value)
Set DateCherche = .Range("E:E").Find(Range("leparf").Value)
Set DateCherche = .Range("F:F").Find(Range("lepdt").Value)
Lorsque la ligne en gras est présente dans le programme, mes données se renseignent au mauvais endroit dans ma base, alors que quand je l'efface, les données se mettent bien au bon endroit. Je ne vois pas du tout où est le problème, et j'ai besoin que cette condition soit prise en compte...
Je ne sais pas si c'est possible non plus... Ou est-ce qu'il faut un programme différent pour chaque?
J'ai essayé plusieurs choses mais rien ne marche, et je ne comprend pas tout à VBA encore...
Merci d'avance
Cordialement,
Alicia
Bonjour
Je dois partir mais déjà empiler les Set DateCherche ne va pas : seule la dernière est prise en compte avant exécution du reste...
RE
Il faudrait faire une seule recherche à la fois puis remplir certaines colonnes des lignes de Base, chaque test ayant ses propres colonnes.
Le problème c'est que j'ai besoin que toutes ces conditions soient réunies pour que le choix de la ligne se fasse correctement
J'aimerais bien que le système ne prenne pas en compte les cellules ou rien n'est noté en fait