Macro dans Excel

Bonjour à toutes et à tous,

Je vais essayer de vous expliquer le plus clairement possible mon problème. J'ai un fichier excel avec plusieurs données, en fait se sont les caractéristiques d'instruments de mesures. Donc pour un instrument je vais avoir plusieurs lignes. Je voudrais faire une macro ou autre chose pour que lorsque je sélectionne la référence d'un instrument j'ai uniquement toutes les interventions effectuées sur cet instrument.
En gros , pour schématiser:
Instrum A: réparation
Instrum A: envoi
Instrum A: réception
Instrum B: réception
Instrum B; réparation
Instrum C:retour
Instrum C réparation

Et sur une feuille il faut lorsqu'on affiche Instrum A qu'il mette toute les donées propres à l'instrum A.

Merci pour votre aide!!
Configuration: Windows 2003
Internet Explorer 6.0

23 réponses

Résumé de la discussion

Le fil traite d'Excel et d'une demande de macro ou d'une solution autonome permettant de filtrer les données pour afficher uniquement les interventions d'un instrument à partir de sa référence. Plusieurs participants suggèrent des approches variées, allant d'une macro VBA qui regroupe les lignes par instrument à des méthodes utilisant des tableaux et des tris automatiques sur une feuille dédiée. Des précisions techniques soulignent des détails pratiques comme la gestion des espaces dans les noms d'onglet et l'utilisation de tableaux pour accélérer la restitution. En complément, certains échanges évoquent le partage d'extraits de fichiers et l'intérêt d'une solution évolutive capable de s'adapter à une croissance annuelle du nombre d'appareils et de données.

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

    Je suis stagiaire dans une entreprise et je dois bosser sur ce sujet : c'est une urgence de dernière minute pour une certification, on doit se mettre à la norme et en gros, ca doit être fait pour avant hier.
    On souhaite gérer nos appareils sur ACCESS à la place d'Excel actuellement et créer des fiches de vie ( d'ate d'envoi au STT pour étalonnage, date de retour, changement d'affectation, envoi/retour en réparation ... )

    Je vois que vous êtes plsr à avoir déjà fait ce travail, alors si vous pourriez m'aider ?

    Please.

    Merci d'avance.

    Ice
    0
    1. salut c concernant ton autre message tu dis que tu est une pro du sexe jaimerai bien voir ca ecrit moi stephano56@hotmail.com jattend de tes nouvelle xxx
      0
      1. Contributeur
        Meûûûh nôôôôn, t'es pas chiante!

        pour masquer

        Sub voirlavie()
        Dim tablo()
        Dim cptr As Long, fin As Long, premlig As Long, derlig As Long

        Application.ScreenUpdating = False
        With Sheets("fiche de vie")
        .Range("A36:J11200").ClearContents
        .Rows(1 & ":" & 1220).Hidden = False
        premlig = .Range("N2")
        derlig = .Range("N1")

        tablo = Sheets("Modification ").Range("B" & premlig & ":E" & derlig).Value

        fin = UBound(tablo)
        For cptr = 1 To fin
        .Cells(35 + cptr, 1) = tablo(cptr, 1)
        .Cells(35 + cptr, 2) = tablo(cptr, 2)
        .Cells(35 + cptr, 7) = tablo(cptr, 3)
        .Cells(35 + cptr, 10) = tablo(cptr, 4)
        Next
        .Rows(36 + fin & ":" & 1220).Hidden = True
        End With
        End Sub

        Pour le coup de la ligne, va falloir passer par un userform, on verra ça demain

        Bonne soirée
        Michel
        0
        1. Je suis vraiment désolée de revenir à la charge mais j'aurais encore qq questions!!!! tu dois m'en vouloir :-)
          en fait ce qui serait sympa c'est que dans la fiche de vie a la fin du tableau je mette la date de la mise à jour ainsi que la signature du responsable, donc l'idée serait de masquer les lignes qui ne serait pas utilisée. Je pensais mettre en fixe sur une ligne quelconque la date et la signature et dans la macro ajouter une commande qui efface les lignes ou il n'y a rien. Il me semble que la fonction .EntireRow.Hidden pourrait peut être fonctionner mais je ne vois pas comment l'intégrer!
          Encore une question (eh oui je sais je suis chiante): est il possible de masquer, dans ma feuille modification, les autres lignes et ne garder qu'une seule ligne pour l'utilisateur?
          Bon moi je vais terminer de mettre à jour toutes les données,
          d'avance merci

          MILLES MERCI pour toute ton aide
          0
          1. Bonjour,

            Je cherche à faire la m^me chose que vous. Serait il possible que vous me fassiez partage le fruit de la réflexion de michel?
            0
        2. Contributeur
          Re,

          C'était LA vach...

          il ya un espace après modification dans le nom de l'onglet d'où le message "l'indice n'appartient pas à la sélection"

          donc ces instructions marchent chez moi:

          premlig = .Range("N2")
          derlig = .Range("N1")

          tablo = Sheets("Modification ").Range("B" & premlig & ":E" & derlig).Value

          explications sur le fonctionnement car il va être + prudent d'amener une amélioration

          premlig donne le n° de la première où on rencontre la ref cherchée par ex pour 1-009 c'est la ligne 22 et pour la dernière ligne de la ref derlig renvoie 56

          le tablo contenant les données est donc ici B22:E56 d'où la syntaxe de la ligne "tablo" ("B" & premilg....)

          On utilise un tableau VBA (array) car la restitution n'est pas dans des colonnes jointives d'où la boucle mais l'avantage est que le bloc à transporter est pris en compte avec 1 instruction au lieu d'une boucle parcourant la zone ( environ 20 fois plus rapide)

          <souligne>ET l'amélioration?:


          si l'utilisateur oublie de trier la zone de modif après la saisie d'une opération de maintenance sur (1-009), tablo va comprendre les lignes 22 à.. 865!!! ( si il y a une ânerie à faire, on est sûr qu'elle va se faire: règle d'or du parfait petit programmeur)

          donc je te suggère de copier cette macro dans le module feuille modification de VBe (clic droit sur onglet-code) qui triera (donc regroupera) les ref automatiquement dès que tu quitteras la feuille "modification"

          Private Sub Worksheet_Deactivate()
          Range("A1:E30000").Sort Key1:=Range("A3")
          End Sub

          Tu peux alors supprimer le bouton et la macro "click" que j'avais installé hier

          Dernier point: nommes tes cellules

          n'hésite pas au cas où (je suis peinard au boulot sauf demain aprem)

          Michel
          0
          1. Contributeur
            Bonjour,

            envoie la b^te (ou un extrait)sur cjoint

            Michel
            0
            1. Hello Michel,

              Encore une fois mille merci pour ton aide, par contre j'ai un petit soucis pour l'exécution de la macro à ce niveau:
              tablo = Sheets("requete acces").Range("T" & premlig & ":W" & derlig).Value
              J'ai beau remplacé le nom de ma feuille, les lettrT et W puisque maintenant avec toutes les données il s'agit d'autre colonne, rien n'y fait. En plus je ne comprend pas l'action qui est déclenchée à ce moment. Les autres actions j'ai plus ou moins compris, bon je n'aurais jamais trouvé toute seule.
              Alors si tu veux bien encore m'expliquer ce point cela serait vraiment gentil de ta part!!

              Merci et bonne journe :-)
              0
              1. Bonjour,

                Je cherche à fiare la même chose que vous à savoir gérer les fiches de vie d'une centaine d'appareils en utilisant excel.
                Pourriez-vouis m'indiquez comment vous avez fait ?

                Cordialement,

                madi
                0
            2. Contributeur
              re,

              Il faut que le curseur clignote dans la barre de formule

              ET

              "ref" et "liste" sont des cellules nommées
              liste:
              'Requete ACCES'!$A$3:$A$30000
              ref:
              ='Fiche de vie'!$C$12

              Bonne soirée

              Michel
              0
              1. OK c'est super sympa de ta part, cela fonctionne. Bon j'avoue que j'ai du mal a comprendre bien toute les formules!!
                par contre je n'arrive pas à faire la validation matricielle. Lorsque je tape la formule je fais Ctrl+Flèche vers le haut+entrée mais j'ai "NOM" qui apparait.
                Comment dois je faire?

                merci en tout cas
                0
                1. Contributeur
                  re,

                  C'est pratiquement fini; des vérifs à faire: je t'envoie ca en début d'aprem (si on me laisse tranquille)

                  je t'ai laissé un peu de boulot à faire sur la partie fixe

                  Bon app
                  Michel
                  0
                  1. oui c'e'st bien cela, ce qui est en rose représente des données fixes sur l'équipement et ce qui est en rouge dans la requete représente la fiche de vie a proprement dit de l'équipement
                    Dès que je modifie un équipement je sélectionne le numéro et j'imprime la "fiche de vie" pour pouvoir archiver
                    aucun soucis pour rajouter une colonne, je n'en tiendrais pas compte lors de l'impression de la fiche de vie
                    merci
                    0
                    1. Contributeur
                      Okay,

                      dans la fiche de vie on choisi la référence en C12 (1-007, 1-009....) et à partir de là on a ses caractéristiques (recherchev) et les événements durant sa vie (macro)
                      C'est bien cela ?

                      puis je disposer d'une colonne intermédiaire à la droite du tableau feuille de vie ? colonne M ou N ou....

                      dans l'attente
                      0
                      1. Je vous mets sur le site que Mike m'a communiqué une partie de mon fichier!
                        merci
                        0
                        1. Contributeur
                          Salut Prisci,

                          Avant de me lancer dans de nouvelles aventures...

                          Ci joint un fichier ou le pb posé était voisin du tien posté sur ce site le 16/4 (auquel avait participé aussi Mike31, salutations, et sans remerciements du demandeur Charrlot, comme d'hab)

                          Tu regardes et si ca te va on l'adaptera à ton systeme: apparamment y'aurait pas trop de boulot.

                          https://www.cjoint.com/?exiTupOYOH

                          Michel
                          0
                          1. Alors je vais essayer d'être un peu plus claire. En fait je dois créer des fiches de vie pour chacun de nos appareils de mesures. On a donc pour chaque appareil un historique avec des dates d'envoi pour étalonnage ou pour réparation. Chaque fois que nous envoyons un de nos appareils nous devons le stipuler dans la fiche de vie. Nous utilisions auparavant la base ACCES mais cela devient trop lourd à gérer! J'ai donc effectuer une requete pour pouvoir récupérer les données d'Acces et pour le moment j'en suis à 866 lignes et 23 colonnes. Parmi ces colonnes il y a des données qui sont repris à chaque fois, les caractéristiques technique de chaque appareils ne sont pas modifiées lors d'un envoi, donc pour ces données c'est OK je fais une rechercheV. Par contre là ou je bloque c'est pour mettre le tableau à jour. Ce tableau prend en compte 4 colonnes (date, opérations effectuée, observations et N° du certificat).
                            Ce que je souhaite c'est dès que j'envoi un de mes appareils le tableau se met à jour.
                            J'ai plus d'une centaine d'appareils donc je ne peux pas faire une feuille Excel pour chaque appareil je pense?? et faire peut être une interface avec VB pour pouvoir chercher un appareil?

                            J'espère avoir été un peu plus précise quant à ma recherche!!

                            D'avance merci à tous pour votre aide!!!!
                            0
                            1. ok c'est gentil merci
                              0
                              1. Salut,

                                tu peux passer avec la fonction recherche, mais il faut que tes références soient unique dans ton tableau.

                                donnes plus de précision sur ton tableau nombre de colonne etc ou joint grace à ce lien un modèle ce sera plus facile

                                https://www.cjoint.com/

                                A+
                                0
                            • 1
                            • 2