Excel: copie de colonne & recherche partielle

Résolu/Fermé
storm - 3 sept. 2009 à 13:49
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 4 sept. 2009 à 09:34
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).
A voir également:

6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 sept. 2009 à 13:57
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
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
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 sept. 2009 à 18:56
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
: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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 sept. 2009 à 09:34
Content pour toi. A la prochaine!
0