Formule et code VBA

Résolu
Bonjour

J'ai un formulaire que j'ai créé mais j'ai du problème sur le code vba
Colonne A date, colonne B numéro de l'image Colonne E nom de l'opérateur, colonne F heure début du traitement et colonne G heure fin du traitement et colonne H total heure du traitement

Lors de la fin de la saisie donc, il y aura une plus d'un enregistrement selon le nombre de dossier que la personne a pris

- Pour la No Image, j'aimerai que ce soit un numéro suivi un énumération
par exemple si dans la formulaire
je saisie 1 à 10, il y a une insertion automatique de 10 lignes suivi du nom ainsi que l'insertion automatique de la date et heure aussi
ou même chose si on cite le numéro début plus le nombre par exemple le n° débute à 100 pour 15 images par exemple donc 101, 102 à 115.

- Pour l'heure fin
Lorsque je saisisse un nom par exemple toutes les lignes qui sont concernées seront remplies d'heure fin

- Pour la recherche
Lorsque je mets un numéro sur la case recherche, la personne qui l'avait fait s'affiche sur le résultat.

Merci pour votre aide

Ci-joint mon fichier

https://we.tl/t-cpy4nDTvUf

46 réponses

Résumé de la discussion

Un formulaire VBA gère l'enregistrement de dossiers d'images: A date, B numéro de l'image, E nom de l'opérateur, F heure début, G heure fin et H total heure, et génère plusieurs enregistrements selon les dossiers. Des solutions clés couvrent l’incrémentation automatique des numéros d’image (par exemple 1 à 10 ou 101 à 115) et le remplissage des dates et heures, et déclenchent l’heure fin dès la saisie du nom. Des ajustements pratiques abordent également la recherche par numéro, le filtrage et l’interface utilisateur, avec des recommandations sur la compatibilité Windows 32 bits, la barre de défilement et la mise en forme des heures.

Bobot (l’IA à votre service)
  1. Bonjour Via

    J’espère que vous allez bien.

    J'avais une autre demande si cela ne vous dérange pas :

    J'ai un fichier excel qui a pour but de compter le nombre de dossiers traités par chaque personne
    et j'aimerai le faire avec VBA dont
    l'objectif est de compter, de lister le numéro au début (Numéro séparer au nom de dossier par "- espace) de chaque dossier que la personne a fait, puis le nom du dossier sur une autre liste sur le userform
    puis le nom de la personne dans le champ résultat et le nombre des dossiers traités sur le champ résultat.

    J'ai mis quelques captures pour mieux expliquer et aussi le fichier excel dont vous trouverez ci-après le lien :

    https://mon-partage.fr/f/3i4Gctw7/

    Merci pour votre aide

    Bonne continuation
    0
    1. merci beaucoup Via
      C'est ce que je voulais vraiment

      Merci, je vous souhaite une excellente journée.

      Cordialement.
      0
      1. Bonjour Christian

        En ce cas il suffit de mettre en E2 la formule =B2+1, de mettre cette cellule au format personnalisé [h]:mm:ss puis d'étirer la formule au bas du tableau

        Cdlmnt
        Via
        0
        1. Bonjour Via

          Ce n'est pas différence mais j'aimerai afficher sur la colonne F
          2:00:00 en 26:00:00 par exemple
          toutes les heures à partir de 00:00:00 donc
          après 23:59, 24:00:00, 25:00:00, 26:00:00 ainsi de suite

          car j'aurai besoin de ces données sur un autre fichier et que ce soit l'heure de la colonne B ou C
          si c'est possible une formule pour que cette affichage

          Merci
          CDT
          0
          1. Re

            Je ne comprends pas ce que tu cherches à obtenir
            En F tu veux calculer la différence entre heure de fin et et heure de début et cumuler d'une ligne sur l’autre, même si ce n'est pas le même matricule ?
            0
            1. oui, j'ai essayé tout cela mais le problème l'heure est déjà affichée en 00:00:10 par exemple sur un fichier, donc pour le changement je devrais changer manuellement chaque ligne
              or il y en a beaucoup.

              Ma demande si c'est possible une formule pour cette affichage sur la colonne E une
              formule pour que l'heure continue en 24 jusqu'à n sans que les minutes et secondes ne changent pas.

              Je vous joins le fichier s'il vous plait.

              https://mon-partage.fr/f/xtv49hWR/

              merci
              Cordialement.
              0
              1. Bonjour Christian

                Pour qu'une celluleaffiche les heures au delà de 24 h il faut la mettre en format personnalisé [h]:mm:mm (aller dans le ruban à Nombre - Autres formats numériques)

                Cdlmnt
                Via
                0
                1. Bonjour Via

                  Bonne année, tous mes meilleurs vœux.
                  J'aimerai poser une question si ça ne vous dérange pas,
                  J'ai un tableau excel dont il y a un affichage d'heure.
                  J'aimerai que l'heure en plus de 24h s'affiche par exemple :
                  00:10:10 en 24:10:10
                  1:15:30 en 25:15:30
                  2:00:00 en 26:00:00

                  Aurait-il une formule par exemple pour cette conversion ?

                  Merci pour votre aide
                  Cordialement
                  0
                  1. Bonjour

                    Merci quand même Via

                    Bonne journée.

                    CDT
                    0
                    1. Je vous remercie

                      c'est résolu donc

                      Merci beaucoup Via

                      A bientôt

                      Bonne soirée
                      0
                      1. Bonjour Via

                        Désolé de vous déranger de nouveau, j'ai un petit problème, lors de l'enregistrement du fichier, je crois qu'il y avait un coupure d'alimentation et celui-ci est endommagé, j'aimerai si vous pouvez récupérer les données du jeudi 10 jusqu'à hier ou le fichier tout entier si c'est possible
                        Je vous joins le fichier et je vous remercie d'avance pour votre aide :

                        https://mon-partage.fr/f/K1zyKxLm/

                        Cordialement
                        0
                    2. Au temps pour moi ! je n'avais pas compris que tu voulais te positionner en bas

                      Alors pour se positionner 8 lignes plus bas que la dernière entrée :
                      Range("A" & Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 8).Select
                      0
                      1. Merci, j'ai trouver le mdp

                        j'ai essayé cette code pour afficher toujour la dernière ligne remplie
                        mais celane montre pas, est ce que vous pouvez le modifier ?

                         Range("A18").Select
                           For n = 8 To Sheets("ADV35").Range("a65536").End(xlDown).Select.show
                           Next


                        le but c'est de trouver la dernière ligne remplie puis l'afficher sur l'ecran plus 8 lignes vides ou moins par exemple
                        après chaque insertion

                        Encore merci Via
                        0
                        1. Que veux dire par l'autre lot de passe ? il n'y en a qu'un
                          Dans les macros on le trouve dans celle associée au bouton Valider et dans celle associée au bouton Heure fin puisque ce sont celles qui écrivent dans la feuille
                          0
                          1. Merci beaucoup Via

                            Ca ira comme ça, mais j'aimerai tout simplement savoir le où se trouve l'autre mot de passe pour ôter la protection à partir de l'onglet proteger feuille.

                            Merci
                            CDT
                            0
                            1. Bonjour christian

                              Pas de souci !
                              La feuille est protégée par le mot de passe admin, les colonnes étant au préalable verrouillées
                              Dans les macros où il faut inscrire dans la feuille une ligne déprotège d'abord la feuille puis une autre la reprotège à la fin
                              Si tu veux changer le mot de passe il faut le modifier dans ces 2 lignes dans les 2 macros
                              En fin de macro on repositionne sur la cellule A1, ainsi tu n'as pas le bas de tableau visible
                              Enfin j'ai shunté ta macro qui verrouillait les cellules et qui faisait bugguer, il n'y a plus besoin puisqu'à défaut lex colonnes sont verrouillées et la feuille protégée
                              https://mon-partage.fr/f/Sm1DoYSg/

                              Cdlmnt
                              Via
                              0
                              1. bonjour Via, désolé de vous déranger de nouveau
                                j'ai fait quelques modifications, et je ne parviens pas
                                ma demande c'est de :

                                - mettre un mot de passe pour verrouiller les cellules remplies mais la mise en fome du tableau reste
                                pour chaque insertion à partir du formulaire, j'ai déjà mis un code mais cela ne marche pas
                                - lorsqu'il y a une insertion, la dernière remplie se positionne toujours sur la ligne où j'ai colorisé en rouge sur le fichier joint, donc à peu près 3/4 de l'écran ou on voit des lignes vides en bas

                                https://mon-partage.fr/f/0MawNane/

                                Je vous remercie pour votre aide, et encore navrés de vous déranger à cette heure ci.

                                Cordialement.
                                0
                                1. Bonjour

                                  Je n'arrive pas à faire fonctionner ton fichier, les macros ne trouvent pas les UF !

                                  Quoiqu'il en soit en relisant le code je pense qu'il faut que tu effectues les manips suivantes :

                                  Dans la macro associée au bouton Filtrer de l'UF filtre :
                                  - Dans la ligne :
                                  For n = 2 To Range("A65536").End(xlUp).Row
                                  changer le 2 en 18 puisque ton tableau commence à cette ligne
                                  - Changer la ligne
                                  Range("BB1") = Range("BB1") + Range("F" & n)
                                  en totheures=totheures + Range("F" & n)
                                  - changer la ligne
                                  Me.total_heures = Round(Range("BB4"), 2)
                                  en
                                  Me.total_heures = totheures

                                  Cdlmnt
                                  Via
                                  0
                                  1. merci beaucoup Via
                                    je crois que ça ira comme ça

                                    Bonne continuation
                                    Encore merci

                                    Cordialement.
                                    0
                                2. Bonjour

                                  Désolé de vous déranger de nouveau,
                                  actuellement le formulaire marche bien mais
                                  j'ai un petit problème

                                  j'ai dû ajouter des lignes en haut pour faciliter le lancement des deux boutons

                                  mais pour le userform filtre et recherche, beaucoup de choses ne marchent pas et sur ce
                                  même userform, j'aimerai que pour le total heure après filtre c'est le total
                                  des filtres de la colonne G pour qu'il n'y a pas de doublons qui gonfle l'heure de traitement

                                  Pouvez vous m'aider s'il vous plait.

                                  Merci
                                  Ci-joint le fichier après modification

                                  https://mon-partage.fr/f/ovKTymo7/

                                  Cordialement
                                  0
                                  • 1
                                  • 2
                                  • 3