Réalisation d'un décompte sous excel

Bonjour à tous,
Je dois réaliser un programme sous Excel 2007 pour une entreprise et étant novice dans le language Vba j'ai un peu de mal à m'y retrouver !
Je dois réaliser 3 feuilles excel avec dans la première un affichage, dans la deuxième une base de données et dans la troisième une sélection des données grâce à un menu déroulant, jusque là pas de soucis ! Dans la feuille où se trouve l'affichage, il faudrait que j'ajoute un décompte propre à un code d'identification ( sachant qu'il y en a une cinquantaine ) donc j'aurai voulu savoir s'il était possible, si une personne choisi tel code d'identification dans le menu déroulant de la feuille 3, que le décompte correspondant s'affiche dans la feuille 1, dans une cellule bien précise ?
Je sais pas si j'ai été très clair..
Merci d'avance pour vos réponses !

6 réponses

Résumé de la discussion

Le besoin consiste à afficher un décompte lié à un code d'identification sur la feuille d'affichage lorsque ce code est choisi dans le menu déroulant de la feuille 3. Des échanges portent sur des solutions VBA et mise à jour du décompte, avec des suggestions comme renommer Date en Date_jour et écrire le décompte dans la feuille d'affichage. La meilleure réponse indique que l'approche envisagée est adaptée et que le sujet soulève de nombreuses questions, avec des échanges sur des erreurs fréquentes et des aspects pratiques du code. En outre, des échanges évoquent mécanismes concrets comme la recherche dans la base et l'écriture des résultats dans des colonnes spécifiques, avec détails sur la localisation des champs et les messages d'erreur.

Bobot (l’IA à votre service)
  1. Bonjour à toi Jb6161.
    Qu'entends tu par décompte ?
    Veux tu partir par exemple de 100 pour chaque identifiant et qu'à chaque fois qu'un des identifiants est sélectionné ca décrémente ?

    C'est à dire si A est sélectionné A décrément et B se stoppe et inversement ?

    1. Pas vraiment, je vais essayer de te donner un exemple.
      La personne choisie le code suivant dans le menu déroulant : 9SOLU002.. ( ca correspond à des produits déstinés à la réalisation de médicaments et ils ont donc des dates de péremptions qui vont être définies en heures ). Evidemment chaque produit n'a pas la même date limite de péremption, donc si ce produit a par exemple 90h35, il faudrait que le décompte parte de 90h35 et arrive à 0h.

      Je t'ai mi des captures pour que tu puisses voir à quoi ça ressemble !
      Merci
      1. J'ai tout de même vraiment du mal à voir ce que tu veux. Ne pourrais-tu déposer ton exemple en fichier excel ?

        En entrant le code 9SOLU002 dans la feuille 3, il est possible d'afficher le décompte souhaité dans la feuille 1.
        Cependant, ce programme va-t-il tourné en permanence ?
        Veux tu un décompte qui se met à jour en temps réel ?
        1. Désolé dans ma tête c'est à peu près clair, mais de l'expliquer aux gens ça l'est beaucoup moins !
          Ce programme tournera en permanence oui.
          Je suis sur un pc au travail et le fichier ne veut pas s'envoyer, aurais-tu une adresse mail à laquelle je pourrai te l'envoyer ?
          1. Je t'ai envoyé mon email en MP
          2. C'est bon, email envoyé
          3. Bien reçu. :) Pour faire un décompte il te faut une heure d'entrée, c'est à dire à partir de laquelle il faut compter. C'est ce que tu appelles heure de fin de transfert ?
          4. C'est ça, sauf que la personne qui va remplir ces données ne va pas forcémment le faire le même jour et à la même heure que l'heure de fin de transfert du coup le décompte(=DLC dans la feuille " Base de donées ") ne sera pas le même que dans la base de données vu qu'il faudra prendre en compte l'interval entre lequel le transfert s'est terminé et celui où la personne a rempli les données.
          5. Oula ^^ Alors attends, je crois que je n'ai pas forcément compris le fichier correctement.
            Dans l'onglet "base de données" ce que tu appelles "DLC en heure" correspond à des données fixes ? C'est à dire 9ENTE0002XX toujours = 243h21 ?

            Je veux vérifier que j'ai bien compris :

            Date de fin de transfert = 26/05/2014
            Heure de fin de transfert = 16h00

            DLC en heure = 200h

            Aujourd'hui à 16h décompte = 200 - 24 = 176 ?
        2. Impossible d'exécuter le sub quand je clique sur " enregistrement " le message d'erreur suivant apparaît : "Erreur d'exécution '70' Permission refusée ".

          Sub enregistrement()

          nb_ligne = 5

          Code = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Ligne = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Cuve = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Date = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Heure = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Lot = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1

          Sheets("Base de données").Activate

          Range("A4:A15000").Select

          num_ligne = Selection.Find(What:=Code, After:=ActiveCell, LookIn:=xlFormulas, _
          LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
          MatchCase:=False, SearchFormat:=False).Row

          Range("A" & num_ligne).Activate

          ActiveCell.Offset(0, 3) = Ligne
          ActiveCell.Offset(0, 4) = Cuve
          ActiveCell.Offset(0, 5) = Date
          ActiveCell.Offset(0, 6) = Heure
          ActiveCell.Offset(0, 7) = Lot

          End Sub

          Quand je fais le débogage, l'erreur se trouve sur la ligne en gras !
          1. Je n'ai pas d'erreur quand je l'éxécute pour ma part. Mais essaie de changer le nom de la variable "Date" par "Date_jour" :

            Date_jour = Range("B" & nb_ligne).Value

            ActiveCell.Offset(0, 5) = Date_jour
        3. " Erreur d'execution '91' Variable objet ou variable de bloc with non définie " et cette fois l'erreur proviens d'une autre ligne:

          Sub enregistrement()

          nb_ligne = 5

          Code = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Ligne = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Cuve = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Date = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Heure = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1
          Lot = Range("B" & nb_ligne).Value
          nb_ligne = nb_ligne + 1

          Sheets("Base de données").Activate

          Range("A4:A15000").Select

          num_ligne = Selection.Find(What:=Code, After:=ActiveCell, LookIn:=xlFormulas, _
          LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
          MatchCase:=False, SearchFormat:=False).Row


          Range("A" & num_ligne).Activate

          ActiveCell.Offset(0, 3) = Ligne
          ActiveCell.Offset(0, 4) = Cuve
          ActiveCell.Offset(0, 5) = Date
          ActiveCell.Offset(0, 6) = Heure
          ActiveCell.Offset(0, 7) = Lot

          End Sub
          1. Remplace tout par :

            Sub enregistrement()

            Dim celltrouve As Range
            Dim code As String

            nb_ligne = 5

            code = Range("B" & nb_ligne).Value
            nb_ligne = nb_ligne + 1
            Ligne = Range("B" & nb_ligne).Value
            nb_ligne = nb_ligne + 1
            Cuve = Range("B" & nb_ligne).Value
            nb_ligne = nb_ligne + 1
            Date = Range("B" & nb_ligne).Value
            nb_ligne = nb_ligne + 1
            Heure = Range("B" & nb_ligne).Value
            nb_ligne = nb_ligne + 1
            Lot = Range("B" & nb_ligne).Value
            nb_ligne = nb_ligne + 1

            Sheets("Base de données").Activate

            With Sheets("Base de données").Columns("A:A")
            Set celltrouve = .Find(code, lookat:=xlWhole)
            End With

            num_ligne = celltrouve.Row
            Range("A" & num_ligne).Activate

            ActiveCell.Offset(0, 3) = Ligne
            ActiveCell.Offset(0, 4) = Cuve
            ActiveCell.Offset(0, 5) = Date
            ActiveCell.Offset(0, 6) = Heure
            ActiveCell.Offset(0, 7) = Lot

            End Sub
          2. ça fonctionne en remplaçant pas " Date_jour " , c'est moi qui ai fait une erreur !
          3. Cela correspond-il a tes besoins ? Je viens de voir ton mail pour l'afficheur. Je crois avoir saisi ^^
          4. Oui, c'est pile ce qu'il me faut merci :), mais j'ai encore pleins de questions ! ^^
          5. Vas-y vas-y mais pour l'affichage du décompte puis-je te changer un la mise en page ?