Excel: copie de colonne & recherche partielle

Résolu
storm -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis en train de travailler sur un outils excel qui permet d'afficher des informations sur des machines en fonction de leur type.

J'ai donc une feuille dédiée a l'affichage des informations et une page dédiée a la base de donnée.

J'ai déja réussi à afficher les informations souhaitée par machine mais en notant les colonnes spécifiques à chaque type de machine dans le VBA

Mon probleme est que je souaiterais que cet outil soit evolutif pour les utilisateurs, à savoir leur permettre d'ajouter ou de supprimer des machines de la base de donnée et que l'affichage du tableau tienne compte du nouveau nombre de machines par type sans avoir à modifier le VBA.

les machines sont référencées par code du style ("typedemachine""responsable""lieu""numéro")
Je suis donc à la recherche d'un code permettant de rechercher dans la feuille base de donnée sur une ligne le type de machine en lisant la premiere partie de son identifiant et de copier dans la feuille affichage les colonnes qui y sont associées.

J'ai déja trouvé quelques formules assez proches de mon probleme, mais aucune qui ne reponde a problematique que je rencontre

D'avance merci si vous pouvez m'aider à résoudre cette interrogation (sans doute tres benigne).
Configuration: Windows XP
Firefox 3.0.8

6 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    difficile de comprendre ce que tu veux en fonction de quoi...
    met un extrait de ton classeur sur
    https://www.cjoint.com/
    et colles le lien proposé dans ta réponse
    dans l'attente
    0
  2. storm
     
    Bonjour,

    Je recherche juste une fonction qui me permette de chercher une expression particuliere (une suite de lettre) au debut d'un mot sur une ligne precise et qui me permette de recopier le contenu des colonnes où cette expression a été trouvée.

    mon classeur contient beaucoup d'elements superflus par rapport à cette requete, j'essaye d'en creer un qui ne comporte que ce qui concerne ma question.
    0
  3. storm
     
    Voici une version tres simplifiée de mon classeur: https://www.cjoint.com/?jdoQfUY8Rj

    Sur la Feuil1 se trouve le tableau d'affichage et sur la Feuil2 se trouve la base de donnée.

    j'utilise des boutons pour permettre à l'utilisateur de choisir sur quelle type de machine il souhaite des informations.

    Par exemple si l'utilisateur veut des informations sur les machines "Hsp", en cliquant sur le bouton Hsp, le classeur affiche les 2 machines

    de meme pour Tak, les 3 machines., etc ...

    Mon probleme est que je souhaiterais avoir la possibilité de rajouter des machines, par exemple une HspTerHtl001

    comment faire pour que mon programme affiche cette nouvelle machine (donc 3 Hsp en tout) sans toucher le VBA ?

    en gros comment faire pour que le classeur cherche toutes les machines commençants par "Hsp" sur la ligne 1 de la Feuil2 pour les recopier sur la Feuil1.
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    ci dessous macros proposées
    la macro "extraire" est paramétrée pour être commune au 3 boutons

    Sub extraire(type_machine)
    Dim der_col As Byte, nbre As Byte, col As Byte
    Dim tablo
    Application.ScreenUpdating = False
    Sheets(1).Range("B1:Z9").ClearContents
    
    With Sheets(2)
        'initialisation
        der_col = .Range("IV1").End(xlToLeft).Column
        nbre = Application.CountIf(.Range(.Cells(1, 2), .Cells(1, der_col)), type_machine & "*")
        col = 1
        For cptr = 1 To nbre
            col = .Rows(1).Find(type_machine, .Cells(1, col), , xlPart).Column
            tablo = .Range(.Cells(1, col), .Cells(9, col)).Value
            With Sheets(1)
                Sheets(1).Range(.Cells(1, cptr + 1), .Cells(9, cptr + 1)).Value = tablo
            End With
            tablo = ""
        Next
    End With
    Application.ScreenUpdating = True
    End Sub
    
    Sub bouton_hsp()
    extraire "Hsp"
    End Sub
    
    Sub bouton_tak()
    extraire "tak"
    End Sub
    
    Sub bouton_Isi()
    extraire "Isi"
    End Sub
    


    tu peux ainsi ajouter une machine à la suite dans feuille2 sans toucher aux codes
    si tu as un nouveau type mettons "ZER"
    il suffit de dessiner un bouton
    et la nouvelle macro_bouton demandera:
    sub bouton_zer()
    extraire "ZER"
    end sub

    Ci joint demo avec nouvelles bécanes hsp et Tak
    https://www.cjoint.com/?jds2VgJ7Rr
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Storm
     
    :O

    Alors la merci enormement ! Pour rester poli, je dirais que je suis littéralement sur mon derrière !

    Je ne pensais pas qu'un code résolvant mon probleme puisse etre aussi souple ! Quand a la possibilité de rajouter une machine aussi simplement ... Chapeau !

    J'espere arriver à un niveau équivalent un jour et pouvoir partager mon savoir comme ça!

    Encore merci
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Content pour toi. A la prochaine!
    0